├── .gitignore ├── Genre ├── 60's.jpg ├── 70's.jpg ├── 80's.jpg ├── 90's.jpg ├── ACG.jpg ├── Blues.jpg ├── CPop.jpg ├── Classical.jpg ├── Country.jpg ├── Disco.jpg ├── EDM.jpg ├── Folk.jpg ├── Funk.jpg ├── Hip-Hop.jpg ├── Instrumental.jpg ├── JPop.jpg ├── Jazz.jpg ├── KPop.jpg ├── Metal.jpg ├── NewAge.jpg ├── Other.jpg ├── Pop.jpg ├── Punk.jpg ├── Rap.jpg ├── Rock.jpg ├── Techno.jpg └── 仅支持jpg格式! ├── LICENSE ├── README.md ├── bakup ├── 6.x │ ├── backup │ │ ├── foobox-6.6.11(alpha) with download.7z │ │ ├── foobox-6.nsi │ │ ├── netsearch.7z │ │ └── nsis.7z │ ├── foobox help.7z │ └── foobox_js_6.7z ├── foo_converter_cfg │ └── foo_converter.dll.cfg ├── jsview_multiplaylist2.js ├── nsis │ ├── Modern UI 2 │ │ └── Welcome.nsh │ ├── foobox-cn32.nsi │ ├── foobox-cn32win7.nsi │ ├── foobox-cn64.nsi │ ├── foobox-cn64win7.nsi │ ├── include │ │ └── GetUserLevel.nsh │ ├── video.foobox.cn32.nsi │ └── video.foobox.cn64.nsi ├── scriptWin7 │ └── styles.css └── shortcut.js ├── biography └── {BA9557CE-7B4B-4E0E-9373-99F511E81252} │ ├── LICENSE.txt │ ├── assets │ ├── html │ │ ├── config.html │ │ ├── confirm.html │ │ ├── input.html │ │ ├── inputApply.notUsed │ │ ├── styles10.css │ │ └── styles7.css │ ├── images │ │ ├── Logo.png │ │ └── flags │ │ │ ├── ad.png │ │ │ ├── ae.png │ │ │ ├── af.png │ │ │ ├── ag.png │ │ │ ├── ai.png │ │ │ ├── al.png │ │ │ ├── am.png │ │ │ ├── ao.png │ │ │ ├── aq.png │ │ │ ├── ar.png │ │ │ ├── as.png │ │ │ ├── at.png │ │ │ ├── au.png │ │ │ ├── aw.png │ │ │ ├── ax.png │ │ │ ├── az.png │ │ │ ├── ba.png │ │ │ ├── bb.png │ │ │ ├── bd.png │ │ │ ├── be.png │ │ │ ├── bf.png │ │ │ ├── bg.png │ │ │ ├── bh.png │ │ │ ├── bi.png │ │ │ ├── bj.png │ │ │ ├── bl.png │ │ │ ├── bm.png │ │ │ ├── bn.png │ │ │ ├── bo.png │ │ │ ├── bq.png │ │ │ ├── br.png │ │ │ ├── bs.png │ │ │ ├── bt.png │ │ │ ├── bv.png │ │ │ ├── bw.png │ │ │ ├── by.png │ │ │ ├── bz.png │ │ │ ├── ca.png │ │ │ ├── cc.png │ │ │ ├── cd.png │ │ │ ├── cf.png │ │ │ ├── cg.png │ │ │ ├── ch.png │ │ │ ├── ci.png │ │ │ ├── ck.png │ │ │ ├── cl.png │ │ │ ├── cm.png │ │ │ ├── cn.png │ │ │ ├── co.png │ │ │ ├── cr.png │ │ │ ├── cu.png │ │ │ ├── cv.png │ │ │ ├── cw.png │ │ │ ├── cx.png │ │ │ ├── cy.png │ │ │ ├── cz.png │ │ │ ├── de.png │ │ │ ├── dj.png │ │ │ ├── dk.png │ │ │ ├── dm.png │ │ │ ├── do.png │ │ │ ├── dz.png │ │ │ ├── ec.png │ │ │ ├── ee.png │ │ │ ├── eg.png │ │ │ ├── eh.png │ │ │ ├── er.png │ │ │ ├── es.png │ │ │ ├── et.png │ │ │ ├── eu.png │ │ │ ├── fi.png │ │ │ ├── fj.png │ │ │ ├── fk.png │ │ │ ├── fm.png │ │ │ ├── fo.png │ │ │ ├── fr.png │ │ │ ├── ga.png │ │ │ ├── gb-eng.png │ │ │ ├── gb-nir.png │ │ │ ├── gb-sct.png │ │ │ ├── gb-wls.png │ │ │ ├── gb.png │ │ │ ├── gd.png │ │ │ ├── ge.png │ │ │ ├── gf.png │ │ │ ├── gg.png │ │ │ ├── gh.png │ │ │ ├── gi.png │ │ │ ├── gl.png │ │ │ ├── gm.png │ │ │ ├── gn.png │ │ │ ├── gp.png │ │ │ ├── gq.png │ │ │ ├── gr.png │ │ │ ├── gs.png │ │ │ ├── gt.png │ │ │ ├── gu.png │ │ │ ├── gw.png │ │ │ ├── gy.png │ │ │ ├── hk.png │ │ │ ├── hm.png │ │ │ ├── hn.png │ │ │ ├── hr.png │ │ │ ├── ht.png │ │ │ ├── hu.png │ │ │ ├── id.png │ │ │ ├── ie.png │ │ │ ├── il.png │ │ │ ├── im.png │ │ │ ├── in.png │ │ │ ├── io.png │ │ │ ├── iq.png │ │ │ ├── ir.png │ │ │ ├── is.png │ │ │ ├── it.png │ │ │ ├── je.png │ │ │ ├── jm.png │ │ │ ├── jo.png │ │ │ ├── jp.png │ │ │ ├── ke.png │ │ │ ├── kg.png │ │ │ ├── kh.png │ │ │ ├── ki.png │ │ │ ├── km.png │ │ │ ├── kn.png │ │ │ ├── kp.png │ │ │ ├── kr.png │ │ │ ├── kw.png │ │ │ ├── ky.png │ │ │ ├── kz.png │ │ │ ├── la.png │ │ │ ├── lb.png │ │ │ ├── lc.png │ │ │ ├── li.png │ │ │ ├── lk.png │ │ │ ├── lr.png │ │ │ ├── ls.png │ │ │ ├── lt.png │ │ │ ├── lu.png │ │ │ ├── lv.png │ │ │ ├── ly.png │ │ │ ├── ma.png │ │ │ ├── mc.png │ │ │ ├── md.png │ │ │ ├── me.png │ │ │ ├── mf.png │ │ │ ├── mg.png │ │ │ ├── mh.png │ │ │ ├── mk.png │ │ │ ├── ml.png │ │ │ ├── mm.png │ │ │ ├── mn.png │ │ │ ├── mo.png │ │ │ ├── mp.png │ │ │ ├── mq.png │ │ │ ├── mr.png │ │ │ ├── ms.png │ │ │ ├── mt.png │ │ │ ├── mu.png │ │ │ ├── mv.png │ │ │ ├── mw.png │ │ │ ├── mx.png │ │ │ ├── my.png │ │ │ ├── mz.png │ │ │ ├── na.png │ │ │ ├── nc.png │ │ │ ├── ne.png │ │ │ ├── nf.png │ │ │ ├── ng.png │ │ │ ├── ni.png │ │ │ ├── nl.png │ │ │ ├── no.png │ │ │ ├── np.png │ │ │ ├── nr.png │ │ │ ├── nu.png │ │ │ ├── nz.png │ │ │ ├── om.png │ │ │ ├── pa.png │ │ │ ├── pe.png │ │ │ ├── pf.png │ │ │ ├── pg.png │ │ │ ├── ph.png │ │ │ ├── pk.png │ │ │ ├── pl.png │ │ │ ├── pm.png │ │ │ ├── pn.png │ │ │ ├── pr.png │ │ │ ├── ps.png │ │ │ ├── pt.png │ │ │ ├── pw.png │ │ │ ├── py.png │ │ │ ├── qa.png │ │ │ ├── re.png │ │ │ ├── ro.png │ │ │ ├── rs.png │ │ │ ├── ru.png │ │ │ ├── rw.png │ │ │ ├── sa.png │ │ │ ├── sb.png │ │ │ ├── sc.png │ │ │ ├── sd.png │ │ │ ├── se.png │ │ │ ├── sg.png │ │ │ ├── sh.png │ │ │ ├── si.png │ │ │ ├── sj.png │ │ │ ├── sk.png │ │ │ ├── sl.png │ │ │ ├── sm.png │ │ │ ├── sn.png │ │ │ ├── so.png │ │ │ ├── sr.png │ │ │ ├── ss.png │ │ │ ├── st.png │ │ │ ├── sv.png │ │ │ ├── sx.png │ │ │ ├── sy.png │ │ │ ├── sz.png │ │ │ ├── tc.png │ │ │ ├── td.png │ │ │ ├── tf.png │ │ │ ├── tg.png │ │ │ ├── th.png │ │ │ ├── tj.png │ │ │ ├── tk.png │ │ │ ├── tl.png │ │ │ ├── tm.png │ │ │ ├── tn.png │ │ │ ├── to.png │ │ │ ├── tr.png │ │ │ ├── tt.png │ │ │ ├── tv.png │ │ │ ├── tw.png │ │ │ ├── tz.png │ │ │ ├── ua.png │ │ │ ├── ug.png │ │ │ ├── um.png │ │ │ ├── us.png │ │ │ ├── uy.png │ │ │ ├── uz.png │ │ │ ├── va.png │ │ │ ├── vc.png │ │ │ ├── ve.png │ │ │ ├── vg.png │ │ │ ├── vi.png │ │ │ ├── vn.png │ │ │ ├── vu.png │ │ │ ├── wf.png │ │ │ ├── ws.png │ │ │ ├── xk.png │ │ │ ├── ye.png │ │ │ ├── yt.png │ │ │ ├── za.png │ │ │ ├── zm.png │ │ │ └── zw.png │ └── licences │ │ └── licences.txt │ ├── main.js │ ├── package.json │ └── scripts │ ├── allmusic.js │ ├── buttons.js │ ├── callbacks.js │ ├── filmstrip.js │ ├── helpers.js │ ├── images.js │ ├── initialise.js │ ├── interface.js │ ├── language.js │ ├── lastfm.js │ ├── library.js │ ├── lyrics.js │ ├── menu.js │ ├── names.js │ ├── panel.js │ ├── popupbox.js │ ├── properties.js │ ├── resize.js │ ├── scrollbar.js │ ├── server.js │ ├── settings.js │ ├── tagger.js │ ├── text.js │ ├── timers.js │ ├── utils.js │ └── wikipedia.js ├── info ├── dui.png ├── nonportable.png ├── portable.png ├── screenshot-dark.jpg └── screenshot-light.jpg ├── script ├── html │ ├── ConfirmDialog.html │ └── styles.css ├── images │ ├── cover_default.jpg │ ├── cover_w.jpg │ └── foobar2000.png ├── js_common │ ├── Genre.js │ ├── JScommon.js │ ├── JScomponents.js │ ├── JSinputbox.js │ ├── common.js │ ├── guiext.js │ ├── splitterESLProp.js │ ├── splitterh.js │ ├── splitterv.js │ ├── splitterve.js │ └── uihacks.js └── js_panels │ ├── base.js │ ├── bottombar.js │ ├── infoArt.js │ ├── jsplaylist.js │ ├── jsplaylist │ ├── WSHheaderbar.js │ ├── WSHplaylist.js │ ├── WSHscrollbar.js │ └── WSHsettings.js │ ├── jssb.js │ ├── jsspm.js │ ├── jsview_multiplaylist.js │ ├── jsview_playlist.js │ ├── properties.js │ └── search.js └── switchgit.bat /.gitignore: -------------------------------------------------------------------------------- 1 | # gitee github git files 2 | .gitee/ 3 | .github/ -------------------------------------------------------------------------------- /Genre/60's.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/60's.jpg -------------------------------------------------------------------------------- /Genre/70's.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/70's.jpg -------------------------------------------------------------------------------- /Genre/80's.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/80's.jpg -------------------------------------------------------------------------------- /Genre/90's.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/90's.jpg -------------------------------------------------------------------------------- /Genre/ACG.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/ACG.jpg -------------------------------------------------------------------------------- /Genre/Blues.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Blues.jpg -------------------------------------------------------------------------------- /Genre/CPop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/CPop.jpg -------------------------------------------------------------------------------- /Genre/Classical.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Classical.jpg -------------------------------------------------------------------------------- /Genre/Country.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Country.jpg -------------------------------------------------------------------------------- /Genre/Disco.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Disco.jpg -------------------------------------------------------------------------------- /Genre/EDM.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/EDM.jpg -------------------------------------------------------------------------------- /Genre/Folk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Folk.jpg -------------------------------------------------------------------------------- /Genre/Funk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Funk.jpg -------------------------------------------------------------------------------- /Genre/Hip-Hop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Hip-Hop.jpg -------------------------------------------------------------------------------- /Genre/Instrumental.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Instrumental.jpg -------------------------------------------------------------------------------- /Genre/JPop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/JPop.jpg -------------------------------------------------------------------------------- /Genre/Jazz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Jazz.jpg -------------------------------------------------------------------------------- /Genre/KPop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/KPop.jpg -------------------------------------------------------------------------------- /Genre/Metal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Metal.jpg -------------------------------------------------------------------------------- /Genre/NewAge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/NewAge.jpg -------------------------------------------------------------------------------- /Genre/Other.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Other.jpg -------------------------------------------------------------------------------- /Genre/Pop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Pop.jpg -------------------------------------------------------------------------------- /Genre/Punk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Punk.jpg -------------------------------------------------------------------------------- /Genre/Rap.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Rap.jpg -------------------------------------------------------------------------------- /Genre/Rock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Rock.jpg -------------------------------------------------------------------------------- /Genre/Techno.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Techno.jpg -------------------------------------------------------------------------------- /Genre/仅支持jpg格式!: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/仅支持jpg格式! -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # foobox 2 | foobox 是一个 [foobar2000](https://www.foobar2000.org) 默认用户界面 (DUI) 的皮肤配置,基于 jsplitter 组件,符合主流软件的审美,扩展功能丰富并保持软件的流畅运行. 3 | ## 【制作和使用】 4 | foobox 中文版适用于 foobar2000 汉化版 by [Asion](https://www.cnblogs.com/asionwu),使用以下第三方组件: 5 | * 基于 [Spider Monkey Panel](https://github.com/TheQwertiest/foo_spider_monkey_panel) 的 [JSplitter](https://foobar2000.ru/forum/viewtopic.php?t=6378),汉化[智享阁](https://www.esnpc.com/); 6 | * ttsping 的歌词组件 [ESLyric](https://github.com/ESLyric/release); 7 | * [foo_enhanced_spectrum_analyzer](https://hydrogenaud.io/index.php/topic,116014.0.html). 8 | 9 | 并修改使用以下优秀的代码部件: 10 | * 播放列表管理器,播放列表,封面浏览原作者 br3tt,汉化 always_beta; 11 | * 封面面板原作者 Jensen; 12 | * 搜索框原作者 [Asion](https://www.cnblogs.com/asionwu); 13 | * [简介面板](https://github.com/Wil-B/Biography)作者 Wil-B; 14 | * 网络电台列表收集自 [范明明](https://github.com/fanmingming)、[Kimentanm](https://github.com/Kimentanm). 15 | 16 | **到最新 Releases (发行版) 页面下载安装包,安装包不包含 foobar2000 汉化版,仅包含 foobox 主题及所需组件,绿色安装,自由便捷。** 17 | 18 | * 支持 32 位及 64 位 foobar2000,其中 32 位版本加入 UI Hacks 组件,适合喜欢隐藏菜单栏状态栏 UI 的朋友,并拥有完整的界面变色效果。 19 | 20 | * 额外的视频面板可选 (不推荐用 fb2k 播放视频),foobox-video 可以在 [github](https://github.com/dream7180/foobox-cn/releases/tag/video8) 或 [gitee](https://gitee.com/dream7180/foobox-en/releases/tag/video8) 下载。 21 | 22 | * 完成后可以在 “主菜单--视图--布局--快速设置”里切换各种 foobox 布局组合。 23 | 24 | ![](info/dui.png) 25 | 26 | [**查看 foobox 帮助**](https://dream7180.github.io/2023/foobox-release/) 27 | 28 | ![alt text](info/screenshot-light.jpg "foobox - DUI foobar2000 media player") 29 | 30 | ![alt text](info/screenshot-dark.jpg "foobox - DUI foobar2000 media player") 31 | -------------------------------------------------------------------------------- /bakup/6.x/backup/foobox-6.6.11(alpha) with download.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/backup/foobox-6.6.11(alpha) with download.7z -------------------------------------------------------------------------------- /bakup/6.x/backup/foobox-6.nsi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/backup/foobox-6.nsi -------------------------------------------------------------------------------- /bakup/6.x/backup/netsearch.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/backup/netsearch.7z -------------------------------------------------------------------------------- /bakup/6.x/backup/nsis.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/backup/nsis.7z -------------------------------------------------------------------------------- /bakup/6.x/foobox help.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/foobox help.7z -------------------------------------------------------------------------------- /bakup/6.x/foobox_js_6.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/foobox_js_6.7z -------------------------------------------------------------------------------- /bakup/foo_converter_cfg/foo_converter.dll.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/foo_converter_cfg/foo_converter.dll.cfg -------------------------------------------------------------------------------- /bakup/nsis/Modern UI 2/Welcome.nsh: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | NSIS Modern User Interface 4 | Welcome page (implemented using nsDialogs) 5 | 6 | */ 7 | 8 | ;-------------------------------- 9 | ;Page interface settings and variables 10 | 11 | !macro MUI_WELCOMEPAGE_INTERFACE 12 | 13 | !ifndef MUI_WELCOMEPAGE_INTERFACE 14 | !define MUI_WELCOMEPAGE_INTERFACE 15 | Var mui.WelcomePage 16 | 17 | Var mui.WelcomePage.Image 18 | Var mui.WelcomePage.Image.Bitmap 19 | 20 | Var mui.WelcomePage.Title 21 | Var mui.WelcomePage.Title.Font 22 | 23 | Var mui.WelcomePage.Text 24 | !endif 25 | 26 | !ifdef MUI_WELCOMEPAGE_LINK 27 | !ifndef MUI_WELCOMEPAGE_LINK_VARIABLES 28 | !define MUI_WELCOMEPAGE_LINK_VARIABLES 29 | Var mui.WelcomePage.Link 30 | !endif 31 | !endif 32 | 33 | !insertmacro MUI_DEFAULT MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp" 34 | !if "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" == "" 35 | !error "Invalid MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP" 36 | !endif 37 | 38 | !macroend 39 | 40 | 41 | ;-------------------------------- 42 | ;Interface initialization 43 | 44 | !macro MUI_WELCOMEPAGE_GUIINIT 45 | 46 | !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEWELCOMEPAGE_GUINIT 47 | !define MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEWELCOMEPAGE_GUINIT 48 | 49 | Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.GUIInit 50 | 51 | InitPluginsDir 52 | File "/oname=$PLUGINSDIR\modern-wizard.bmp" "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" 53 | !pragma verifyloadimage "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" 54 | 55 | !ifdef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT 56 | Call "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT}" 57 | !endif 58 | 59 | FunctionEnd 60 | 61 | !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.GUIInit 62 | 63 | !endif 64 | 65 | !macroend 66 | 67 | 68 | ;-------------------------------- 69 | ;Page declaration 70 | 71 | !macro MUI_PAGEDECLARATION_WELCOME 72 | 73 | !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEPAGE "" 74 | !insertmacro MUI_WELCOMEPAGE_INTERFACE 75 | 76 | !insertmacro MUI_WELCOMEPAGE_GUIINIT 77 | 78 | !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TITLE "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TITLE)" 79 | !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TEXT)" 80 | !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_LINK_COLOR "000080" 81 | 82 | !insertmacro MUI_PAGE_FUNCTION_FULLWINDOW 83 | 84 | PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom 85 | 86 | PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID} 87 | 88 | PageExEnd 89 | 90 | !insertmacro MUI_FUNCTION_WELCOMEPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID} \ 91 | ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.Link_${MUI_UNIQUEID} 92 | 93 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE 94 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_3LINES 95 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT 96 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_LINK 97 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_LINK_LOCATION 98 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_LINK_COLOR 99 | 100 | !macroend 101 | 102 | !macro MUI_PAGE_WELCOME 103 | 104 | !verbose push 105 | !verbose ${MUI_VERBOSE} 106 | 107 | !insertmacro MUI_PAGE_INIT 108 | !insertmacro MUI_PAGEDECLARATION_WELCOME 109 | 110 | !verbose pop 111 | 112 | !macroend 113 | 114 | !macro MUI_UNPAGE_WELCOME 115 | 116 | !verbose push 117 | !verbose ${MUI_VERBOSE} 118 | 119 | !insertmacro MUI_UNPAGE_INIT 120 | !insertmacro MUI_PAGEDECLARATION_WELCOME 121 | 122 | !verbose pop 123 | 124 | !macroend 125 | 126 | 127 | ;-------------------------------- 128 | ;Page functions 129 | 130 | !macro MUI_FUNCTION_WELCOMEPAGE PRE LEAVE LINK 131 | 132 | !ifdef MUI_WELCOMEPAGE_LINK 133 | 134 | Function "${LINK}" 135 | 136 | ExecShell open "${MUI_WELCOMEPAGE_LINK_LOCATION}" 137 | 138 | FunctionEnd 139 | 140 | !endif 141 | 142 | Function "${PRE}" 143 | 144 | !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE 145 | 146 | ;Create dialog 147 | nsDialogs::Create 1044 148 | Pop $mui.WelcomePage 149 | nsDialogs::SetRTL $(^RTL) 150 | SetCtlColors $mui.WelcomePage "" "${MUI_BGCOLOR}" 151 | 152 | ;Image control 153 | ${NSD_CreateBitmap} 0u 0u 109u 193u "" 154 | Pop $mui.WelcomePage.Image 155 | !insertmacro MUI_INTERNAL_FULLWINDOW_LOADWIZARDIMAGE "${MUI_PAGE_UNINSTALLER_PREFIX}" $mui.WelcomePage.Image $PLUGINSDIR\modern-wizard.bmp $mui.WelcomePage.Image.Bitmap 156 | 157 | ;Positiong of controls 158 | 159 | ;Title 160 | !ifndef MUI_WELCOMEPAGE_TITLE_3LINES 161 | !define MUI_WELCOMEPAGE_TITLE_HEIGHT 28 162 | !else 163 | !define MUI_WELCOMEPAGE_TITLE_HEIGHT 38 164 | !endif 165 | 166 | ;Text 167 | ;17 = 10 (top margin) + 7 (distance between texts) 168 | !define /math MUI_WELCOMEPAGE_TEXT_TOP 17 + ${MUI_WELCOMEPAGE_TITLE_HEIGHT} 169 | 170 | ;Title 171 | ${NSD_CreateLabel} 120u 10u 195u ${MUI_WELCOMEPAGE_TITLE_HEIGHT}u "${MUI_WELCOMEPAGE_TITLE}" 172 | Pop $mui.WelcomePage.Title 173 | SetCtlColors $mui.WelcomePage.Title "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" 174 | CreateFont $mui.WelcomePage.Title.Font "$(^Font)" "12" "700" 175 | SendMessage $mui.WelcomePage.Title ${WM_SETFONT} $mui.WelcomePage.Title.Font 0 176 | 177 | ;Welcome text 178 | ${NSD_CreateLabel} 120u ${MUI_WELCOMEPAGE_TEXT_TOP}u 195u 105u "${MUI_WELCOMEPAGE_TEXT}" 179 | Pop $mui.WelcomePage.Text 180 | SetCtlColors $mui.WelcomePage.Text "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" 181 | 182 | ;Link 183 | !ifdef MUI_WELCOMEPAGE_LINK 184 | ${NSD_CreateLink} 120u 160u 195u 10u "${MUI_WELCOMEPAGE_LINK}" 185 | Pop $mui.WelcomePage.Link 186 | SetCtlColors $mui.WelcomePage.Link "${MUI_WELCOMEPAGE_LINK_COLOR}" "${MUI_BGCOLOR}" 187 | ${NSD_OnClick} $mui.WelcomePage.Link "${LINK}" 188 | !endif 189 | 190 | ;Show page 191 | Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageLoadFullWindow 192 | !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW 193 | nsDialogs::Show 194 | !insertmacro MUI_PAGE_FUNCTION_CUSTOM DESTROYED 195 | Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageUnloadFullWindow 196 | 197 | ;Delete image from memory 198 | ${NSD_FreeImage} $mui.WelcomePage.Image.Bitmap 199 | 200 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_HEIGHT 201 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT_TOP 202 | 203 | FunctionEnd 204 | 205 | Function "${LEAVE}" 206 | 207 | !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE 208 | 209 | FunctionEnd 210 | 211 | !macroend 212 | -------------------------------------------------------------------------------- /bakup/nsis/foobox-cn64win7.nsi: -------------------------------------------------------------------------------- 1 | Unicode true 2 | 3 | # Include 4 | !include "MUI2.nsh" 5 | !include "nsDialogs.nsh" 6 | !include "GetUserLevel.nsh" 7 | 8 | #Var 9 | Var ProfileDir 10 | Var CfgCheckbox 11 | Var noAdmin 12 | Var noConfig 13 | Var initDestination 14 | Var FontDir 15 | 16 | #APP 17 | !define FBOX_VER "8.3" 18 | !define BUILD_NUM "1" 19 | 20 | # Setup 21 | Name "foobox" 22 | OutFile "foobox_x64.cn.v${FBOX_VER}-win7-${BUILD_NUM}.exe" 23 | # VerInfo 24 | VIProductVersion "${FBOX_VER}.0.${BUILD_NUM}.win7" 25 | VIAddVersionKey "ProductName" "foobox" 26 | VIAddVersionKey "FileDescription" "foobox DUI theme for foobar2000" 27 | VIAddVersionKey "LegalCopyright" "https://github.com/dream7180" 28 | VIAddVersionKey "FileVersion" "${FBOX_VER}" 29 | VIAddVersionKey "ProductVersion" "${FBOX_VER}" 30 | 31 | # Compile 32 | SetCompressor /SOLID lzma 33 | SetCompressorDictSize 32 34 | SetDatablockOptimize on 35 | SetOverwrite try 36 | SetFont "Microsoft Yahei" 9 37 | 38 | # Runtime 39 | Caption "安装 foobox 主题 v${FBOX_VER} 到 foobar2000 (x64) [Windows 7 专用版]" 40 | RequestExecutionLevel highest 41 | ShowInstDetails show 42 | DirText "安装程序会自动检测 foobar2000 的安装路径,如果检测不到或要安装到别的 foobar2000 所在目录,请点击 [浏览(B)...] 并选择合适的文件夹。" "" "" "选择 foobar2000 的根目录来安装 $(^NameDA):" 43 | BrandingText "NSIS v3" 44 | 45 | # --- MUI Settings Start --- 46 | ReserveFile ".\common\installer\install8.ico" 47 | ReserveFile ".\common\installer\foobox8.bmp" 48 | 49 | # MUI 50 | !define MUI_UI_COMPONENTSPAGE_SMALLDESC "${NSISDIR}\Contrib\UIs\modern_smalldesc.exe" 51 | !define MUI_COMPONENTSPAGE_SMALLDESC 52 | 53 | # Icon 54 | !define MUI_ICON ".\common\installer\install8.ico" 55 | # Bitmap 56 | !define MUI_WELCOMEFINISHPAGE_BITMAP ".\common\installer\foobox8.bmp" 57 | 58 | # - InstallPage - 59 | !define MUI_ABORTWARNING 60 | 61 | !define MUI_WELCOMEPAGE_TEXT "\ 62 | foobox 是音频播放器 foobar2000 的定制主题,基于默认用户界面 (DUI) 及 JSplitter (Spider Monkey Panel 版) 组件,符合主流软件的审美,扩展功能丰富并保持软件的流畅运行.$\n$\n\ 63 | 安装 foobox 到 foobar2000 前您应该已安装有 foobar2000 播放器 (64 位版). $\n$\n\ 64 | 本安装包使用旧版的 JSPlitter(3.6.1.10),为 Windows 7 专用." 65 | 66 | !define MUI_WELCOMEPAGE_LINK "下载 foobar2000 汉化版 by Asion" 67 | !define MUI_WELCOMEPAGE_LINK_LOCATION "https://www.cnblogs.com/asionwu" 68 | !insertmacro MUI_PAGE_WELCOME 69 | 70 | # DirectoryPage 71 | !define MUI_PAGE_CUSTOMFUNCTION_PRE Check_Dir 72 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Dir_Leave 73 | !define MUI_TEXT_DIRECTORY_SUBTITLE "选择 foobar2000.exe 程序所在的目录来安装 $(^NameDA)。" 74 | !insertmacro MUI_PAGE_DIRECTORY 75 | 76 | #extra option page 77 | Page Custom OptionsPageCreate OptionsPageLeave 78 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Inst_pre 79 | !insertmacro MUI_PAGE_COMPONENTS 80 | !insertmacro MUI_PAGE_INSTFILES 81 | !define MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) 已经成功安装到 foobar2000。$\r$\nfoobox 的文件和所需组件位于 foobar2000 的程序和用户数据目录,卸载 foobar2000 时可以一并移除。$\r$\n$\r$\n点击 [完成(F)] 关闭安装程序。" 82 | !define MUI_FINISHPAGE_LINK "访问 github 上的 foobox 项目" 83 | !define MUI_FINISHPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn" 84 | !insertmacro MUI_PAGE_FINISH 85 | #language 86 | !insertmacro MUI_LANGUAGE "SimpChinese" 87 | 88 | # --- Install Section --- 89 | Section "foobox 主题和所需组件" fooboxCore 90 | SectionIn RO 91 | 92 | Delete "$INSTDIR\themes\foobox*.fth" 93 | 94 | SetOutPath "$INSTDIR\themes" 95 | File ".\cn\xcommon\themes\*.*" 96 | File ".\cn\x64\themes\*.*" 97 | 98 | SetOutPath "$ProfileDir\foobox" 99 | File /r ".\cn\xcommon\foobox\*.*" 100 | 101 | SetOutPath "$ProfileDir\user-components-x64\foo_enhanced_spectrum_analyzer" 102 | File ".\cn\x64\profile\user-components-x64\foo_enhanced_spectrum_analyzer\foo_enhanced_spectrum_analyzer.dll" 103 | 104 | SetOutPath "$ProfileDir\user-components-x64\foo_playcount" 105 | File ".\cn\x64\profile\user-components-x64\foo_playcount\foo_playcount.dll" 106 | 107 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_jsplitter" 108 | File ".\cn\win7\jsplitter-x64\*.*" 109 | 110 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_eslyric" 111 | File /r ".\cn\xcommon\foo_uie_eslyric\*.*" 112 | 113 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_jsplitter" 114 | File /r ".\common\foo_uie_jsplitter\*.*" 115 | 116 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_eslyric" 117 | File ".\common\eslyric\x64\legacy\foo_uie_eslyric.dll" 118 | 119 | SetOutPath "$ProfileDir\foobox\script\html" 120 | File ".\common\scriptWin7\styles.css" 121 | 122 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_jsplitter\samples\packages" 123 | File /r ".\cn\xcommon\biography-package\*.*" 124 | 125 | ${If} $noConfig = 0 126 | SetOutPath "$ProfileDir" 127 | File ".\cn\x64\profile\theme.fth" 128 | ${EndIf} 129 | ; install font 130 | Call CheckFontA 131 | ${If} $FontDir != "NOINST" 132 | Call CheckFontU 133 | ${EndIf} 134 | ;MessageBox MB_OK "Fontdir is $FontDir." 135 | ${If} $FontDir != "NOINST" 136 | SetOutPath "$FontDir" 137 | File ".\common\fontawesome-webfont.ttf" 138 | 139 | System::Call "gdi32::AddFontResource(t '$FontDir\fontawesome-webfont.ttf')" 140 | 141 | Push '$FontDir\fontawesome-webfont.ttf' 142 | Call GetFontName 143 | Pop $R0 144 | 145 | ${If} $R0 != 'error' 146 | ${If} $noAdmin = 0 147 | WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" '$R0 (TrueType)' 'fontawesome-webfont.ttf' 148 | ${Else} 149 | WriteRegStr HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" '$R0 (TrueType)' '$FontDir\fontawesome-webfont.ttf' 150 | ${EndIf} 151 | ${Else} 152 | System::Call "gdi32::RemoveFontResource(t '$FontDir\fontawesome-webfont.ttf')" 153 | ${EndIf} 154 | ${EndIf} 155 | SectionEnd 156 | 157 | Section "文件格式图标" Icons 158 | SetOutPath "$INSTDIR\icons" 159 | File /r ".\common\icons\*.*" 160 | SectionEnd 161 | 162 | Section /o "写入 Last.fm 到 hosts" LastfmHosts 163 | SetOutPath "$INSTDIR" 164 | File ".\common\lastfmhosts.bat" 165 | nsExec::Exec "$INSTDIR\lastfmhosts.bat" 166 | SectionEnd 167 | 168 | Section -Post 169 | # 获取安装目录读写权限 170 | AccessControl::GrantOnFile "$INSTDIR" "(BU)" "FullAccess" 171 | Delete "$INSTDIR\lastfmhosts.bat" 172 | SectionEnd 173 | 174 | Function .onInit 175 | System::Call 'SHCore::SetProcessDpiAwareness(i 1)i.R0' 176 | StrCpy $InstDir $initDestination 177 | 178 | # 创建互斥防止重复运行 179 | System::Call `kernel32::CreateMutex(i0,i0,t"foobox_installer")i.r1?e` 180 | Pop $R0 181 | StrCmp $R0 0 +3 182 | MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经运行!" 183 | Abort 184 | FunctionEnd 185 | 186 | Function .onVerifyInstDir 187 | IfFileExists $INSTDIR\foobar2000.exe PathGood 188 | Abort 189 | PathGood: 190 | FunctionEnd 191 | 192 | Function Check_Dir 193 | SetShellVarContext current 194 | ${If} $initDestination != "" 195 | StrCpy $InstDir $initDestination 196 | ${Else} 197 | SetRegView 64 198 | ReadRegStr $INSTDIR HKLM "Software\foobar2000" "InstallDir" 199 | ${EndIf} 200 | FunctionEnd 201 | 202 | Function Dir_Leave 203 | StrCpy $ProfileDir "$APPDATA\foobar2000-v2" 204 | IfFileExists $INSTDIR\portable_mode_enabled 0 +2 205 | StrCpy $ProfileDir "$InstDir\profile" 206 | FunctionEnd 207 | 208 | Function OptionsPageCreate 209 | #Call CheckWinver 210 | Call CheckUser 211 | StrCpy $initDestination $InstDir ; If the user clicks BACK on the directory page we will remember their mode specific directory 212 | !insertmacro MUI_HEADER_TEXT "选项及注意事项" "重要提示: 此版本需要 64 位的 foobar2000." 213 | nsDialogs::Create 1018 214 | ${NSD_CreateLabel} 10u 0u 90% 10u "安装或升级 foobox 不会更改 foobar2000 的核心设置,可放心覆盖." 215 | 216 | IfFileExists $INSTDIR\icons\*.* +3 0 217 | SectionSetFlags ${Icons} 0 218 | SectionSetText ${Icons} "" 219 | 220 | ${If} $noAdmin = 1 221 | SectionSetFlags ${LastfmHosts} 0 222 | SectionSetText ${LastfmHosts} "" 223 | ${EndIf} 224 | ${NSD_CreateCheckbox} 10u 30u 90% 10u "不安装主题配置文件" 225 | Pop $CfgCheckbox 226 | ${If} $noConfig = 1 227 | ${NSD_Check} $CfgCheckbox 228 | ${EndIf} 229 | ${NSD_CreateLabel} 20u 40u 90% 20u "如果勾选, theme.fth 文件将不会安装. 谨慎, 不确定勿勾选!" 230 | ;EnableWindow $CfgCheckbox 0 231 | nsDialogs::Show 232 | FunctionEnd 233 | 234 | Function OptionsPageLeave 235 | ${NSD_GetState} $CfgCheckbox $0 236 | ${If} $0 = ${BST_CHECKED} 237 | StrCpy $noConfig 1 238 | ${Else} 239 | StrCpy $noConfig 0 240 | ${EndIf} 241 | FunctionEnd 242 | 243 | Function Inst_pre 244 | ExecWait "$\"$INSTDIR\foobar2000.exe$\" /quiet /quit" 245 | FunctionEnd 246 | 247 | Function CheckUser 248 | Pop $0 249 | Pop $R0 250 | ReadEnvStr $R0 "USERNAME" 251 | ${GetUserLevel} $0 $R0 252 | ${If} $0 != 2 253 | StrCpy $noAdmin 1 254 | StrCpy $FontDir "$PROFILE\AppData\Local\Microsoft\Windows\Fonts" 255 | ${Else} 256 | StrCpy $noAdmin 0 257 | StrCpy $FontDir "$FONTS" 258 | ${EndIf} 259 | FunctionEnd 260 | 261 | Function CheckFontA 262 | Pop $0 263 | ClearErrors 264 | ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "FontAwesome (TrueType)" 265 | IfErrors INSTOK 0 266 | ${IF} $0 != "" 267 | StrCpy $FontDir "NOINST" 268 | ${ENDIF} 269 | INSTOK: 270 | FunctionEnd 271 | 272 | Function CheckFontU 273 | Pop $0 274 | ClearErrors 275 | ReadRegStr $0 HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "FontAwesome (TrueType)" 276 | IfErrors INSTOK 0 277 | ${IF} $0 != "" 278 | StrCpy $FontDir "NOINST" 279 | ${ENDIF} 280 | INSTOK: 281 | FunctionEnd 282 | 283 | Function GetFontName 284 | Exch $R0 285 | Push $R1 286 | Push $R2 287 | 288 | System::Call *(i${NSIS_MAX_STRLEN})i.R1 289 | System::Alloc ${NSIS_MAX_STRLEN} 290 | Pop $R2 291 | System::Call gdi32::GetFontResourceInfoW(wR0,iR1,iR2,i1)i.R0 292 | ${If} $R0 == 0 293 | StrCpy $R0 error 294 | ${Else} 295 | System::Call *$R2(&w${NSIS_MAX_STRLEN}.R0) 296 | ${EndIf} 297 | System::Free $R1 298 | System::Free $R2 299 | 300 | Pop $R2 301 | Pop $R1 302 | Exch $R0 303 | FunctionEnd 304 | 305 | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN 306 | !insertmacro MUI_DESCRIPTION_TEXT ${fooboxCore} "foobox DUI 主题的文件和所需组件." 307 | !insertmacro MUI_DESCRIPTION_TEXT ${Icons} "替换文件格式关联图标为 foobox 主题的图标." 308 | !insertmacro MUI_DESCRIPTION_TEXT ${LastfmHosts} "把 Last.fm 地址写入 hosts, 让简介面板能下载图片 (可用性不确定)." 309 | !insertmacro MUI_FUNCTION_DESCRIPTION_END 310 | -------------------------------------------------------------------------------- /bakup/nsis/include/GetUserLevel.nsh: -------------------------------------------------------------------------------- 1 | !define USER_PRIV_GUEST 0 2 | !define USER_PRIV_USER 1 3 | !define USER_PRIV_ADMIN 2 4 | 5 | !include "Util.nsh" 6 | !define GetUserLevel "!insertmacro Call_GetUserLevel" 7 | !macro Call_GetUserLevel _level _username 8 | !verbose push 9 | !verbose 3 10 | Push ${_username} 11 | ${CallArtificialFunction} Func_GetUserLevel 12 | Pop ${_level} 13 | !verbose pop 14 | !macroend 15 | !macro Func_GetUserLevel 16 | Exch $R0 17 | Push $R1 18 | System::Call "*(i)i.R1" 19 | System::Call "netapi32::NetUserGetInfo(in,wR0,i1,iR1)i.R0" 20 | IntCmp $R0 0 +3 21 | Push error 22 | Goto lbl_end 23 | System::Call "*$R1(i.R0)" 24 | System::Call "*$R0(w,w,i,i.s)" 25 | System::Call "netapi32::NetApiBufferFree(iR0)" 26 | lbl_end: 27 | System::Free $R1 28 | Exch 29 | Pop $R1 30 | Exch 31 | Pop $R0 32 | !macroend -------------------------------------------------------------------------------- /bakup/nsis/video.foobox.cn32.nsi: -------------------------------------------------------------------------------- 1 | Unicode true 2 | 3 | # Include 4 | !include "MUI2.nsh" 5 | !include "nsDialogs.nsh" 6 | !include "GetUserLevel.nsh" 7 | 8 | #Var 9 | Var PortableMode 10 | Var ProfileDir 11 | Var VersionCheckbox 12 | Var CfgCheckbox 13 | Var noAdmin 14 | Var noConfig 15 | Var initDestination 16 | Var initVersion 17 | 18 | #APP 19 | !define /date ComplieTime "%y%m%d" 20 | !define FBOX_VER "8" 21 | !define VER_DATE "20${ComplieTime}" 22 | !define BUILD_NUM "1" 23 | 24 | # Setup 25 | Name "foobox 视频面板" 26 | OutFile "foobox8-video_x86.cn.${VER_DATE}.exe" 27 | # VerInfo 28 | VIProductVersion "${VER_DATE}.0.0.${BUILD_NUM}" 29 | VIAddVersionKey "ProductName" "foobox video" 30 | VIAddVersionKey "FileDescription" "video panels for foobox theme of foobar2000" 31 | VIAddVersionKey "LegalCopyright" "https://github.com/dream7180" 32 | VIAddVersionKey "FileVersion" "${VER_DATE}" 33 | VIAddVersionKey "ProductVersion" "${VER_DATE}.0" 34 | 35 | # Compile 36 | SetCompressor /SOLID lzma 37 | SetCompressorDictSize 32 38 | SetDatablockOptimize on 39 | SetOverwrite try 40 | SetFont "Microsoft Yahei" 9 41 | 42 | # Runtime 43 | Caption "安装视频组件和布局到 foobox v${FBOX_VER} 主题" 44 | RequestExecutionLevel highest 45 | ShowInstDetails show 46 | DirText "安装程序会自动检测 foobar2000 的安装路径,如果检测不到或要安装到别的 foobar2000 所在目录,请点击 [浏览(B)...] 并选择合适的文件夹。" "" "" "选择 foobar2000 的根目录来安装 $(^NameDA):" 47 | BrandingText "NSIS v3" 48 | 49 | # --- MUI Settings Start --- 50 | ReserveFile ".\common\installer\installer.ico" 51 | ReserveFile ".\common\installer\boxvideo.bmp" 52 | 53 | # MUI 54 | !define MUI_UI_COMPONENTSPAGE_SMALLDESC "${NSISDIR}\Contrib\UIs\modern_smalldesc.exe" 55 | !define MUI_COMPONENTSPAGE_SMALLDESC 56 | 57 | # Icon 58 | !define MUI_ICON ".\common\installer\installer.ico" 59 | # Bitmap 60 | !define MUI_WELCOMEFINISHPAGE_BITMAP ".\common\installer\boxvideo.bmp" 61 | 62 | # - InstallPage - 63 | !define MUI_ABORTWARNING 64 | 65 | !define MUI_WELCOMEPAGE_TEXT "\ 66 | 本程序将安装额外的视频面板及其支持组件到集成有 foobox 主题 (x86) 的 foobar2000 音频播放器.$\n$\n\ 67 | 本程序不包含 foobar2000 程序及 foobox 主题,安装前您应该已安装有 foobar2000 播放器 (x86版) 并整合了 foobox 主题." 68 | 69 | !define MUI_WELCOMEPAGE_LINK "访问 github 上的 foobox 项目" 70 | !define MUI_WELCOMEPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn" 71 | !insertmacro MUI_PAGE_WELCOME 72 | 73 | # DirectoryPage 74 | !define MUI_PAGE_CUSTOMFUNCTION_PRE Check_Dir 75 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Dir_Leave 76 | !define MUI_TEXT_DIRECTORY_SUBTITLE "选择 foobar2000.exe 程序所在的目录来安装 $(^NameDA)。" 77 | !insertmacro MUI_PAGE_DIRECTORY 78 | 79 | #extra option page 80 | Page Custom OptionsPageCreate OptionsPageLeave 81 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Inst_pre 82 | !insertmacro MUI_PAGE_COMPONENTS 83 | !insertmacro MUI_PAGE_INSTFILES 84 | !define MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) 已经成功安装到 foobar2000。$\r$\n文件和组件位于 foobar2000 的程序和用户数据目录,卸载 foobar2000 时可以一并移除。$\r$\n$\r$\n你现在可以在 foobar2000 主菜单“视图 - 布局 - 快速设置”里找到带视频面板的布局。$\r$\n$\r$\n点击 [完成(F)] 关闭安装程序。" 85 | !define MUI_FINISHPAGE_LINK "访问 github 上的 foobox 项目" 86 | !define MUI_FINISHPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn" 87 | !insertmacro MUI_PAGE_FINISH 88 | #language 89 | !insertmacro MUI_LANGUAGE "SimpChinese" 90 | 91 | # --- Install Section --- 92 | 93 | Section "foo_input_ffmpeg 解码器封装组件" fooffmpeg 94 | SectionIn RO 95 | SetOutPath "$ProfileDir\user-components\foo_input_ffmpeg" 96 | File ".\cn\vx86\profile\user-components\foo_input_ffmpeg\*.*" 97 | ${If} $noConfig = 0 98 | SetOutPath "$ProfileDir\configuration" 99 | File ".\cn\vxcommon\profile\configuration\foo_input_ffmpeg.dll.cfg" 100 | ${EndIf} 101 | SetOutPath "$INSTDIR\encoders\ffmpeg" 102 | File /r ".\common\vx86\profile\foo_youtube\ffmpeg\*.*" 103 | Delete "$INSTDIR\themes\foobox*.fth" 104 | SectionEnd 105 | 106 | Section "视频面板 foo-youtube" VideoYoutube 107 | ;SectionIn 2 108 | 109 | ;remove old version files 110 | #IfFileExists "$INSTDIR\encoders\LAVFilters" 0 +6 111 | #${If} $noAdmin = 0 112 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVSplitter.ax" 113 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVVideo.ax" 114 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVAudio.ax" 115 | #${EndIf} 116 | #RMDir /r "$INSTDIR\encoders" 117 | #RMDir /r "$ProfileDir\foo_youtube" 118 | ;install new file 119 | SetOutPath "$ProfileDir\user-components\foo_youtube" 120 | File ".\common\vx86\profile\user-components\foo_youtube\*.*" 121 | File ".\common\vxcommon\foo_youtube\*.*" 122 | ${If} $noConfig = 0 123 | SetOutPath "$ProfileDir" 124 | File ".\cn\vx86\profile\theme.fth" 125 | SetOutPath "$ProfileDir\configuration" 126 | ${If} $noAdmin = 0 127 | File /oname=foo_youtube.dll.cfg ".\cn\vxcommon\profile\configuration\foo_youtube_admin.dll.cfg" 128 | ${Else} 129 | File /oname=foo_youtube.dll.cfg ".\cn\vxcommon\profile\configuration\foo_youtube_noadmin.dll.cfg" 130 | ${EndIf} 131 | ${EndIf} 132 | SetOutPath "$INSTDIR\themes" 133 | File ".\cn\vx86\themes\foobox8 + 简介 + 视频(youtube).fth" 134 | File ".\cn\vx86\themes\foobox8 + 视频(youtube).fth" 135 | SetOutPath "$ProfileDir\foo_youtube" 136 | File /r ".\common\vx86\profile\foo_youtube\*.*" 137 | File /r ".\cn\vx86\profile\foo_youtube\*.*" 138 | File ".\common\vxcommon\youtube-dl.exe" 139 | ${If} $noAdmin = 0 140 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVSplitter.ax"' 141 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVVideo.ax"' 142 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVAudio.ax"' 143 | ${EndIf} 144 | SetOutPath "$INSTDIR" 145 | ${If} $PortableMode = 0 146 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_0.bat" 147 | ${ElseIf} $PortableMode = 1 148 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_1.bat" 149 | ${Else} 150 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_2.bat" 151 | ${EndIf} 152 | SectionEnd 153 | 154 | Section /o "视频面板 foo-mpv" VideoMPV 155 | SetOutPath "$ProfileDir\user-components\foo_mpv" 156 | File /r ".\cn\vx86\profile\user-components\foo_mpv\*.*" 157 | ${If} $noConfig = 0 158 | SetOutPath "$ProfileDir\configuration" 159 | File ".\cn\vxcommon\profile\configuration\foo_mpv.dll.cfg" 160 | ${EndIf} 161 | SetOutPath "$INSTDIR\themes" 162 | File ".\cn\vx86\themes\foobox8 + 简介 + 视频(mpv).fth" 163 | File ".\cn\vx86\themes\foobox8 + 视频(mpv).fth" 164 | SetOutPath "$ProfileDir\mpv" 165 | File /r ".\cn\vxcommon\profile\mpv\*.*" 166 | SectionEnd 167 | 168 | /* 169 | Section -Post 170 | # 获取安装目录读写权限 171 | AccessControl::GrantOnFile "$INSTDIR" "(BU)" "FullAccess" 172 | Delete "$INSTDIR\lastfmhosts.bat" 173 | SectionEnd 174 | */ 175 | Function .onInit 176 | System::Call 'SHCore::SetProcessDpiAwareness(i 1)i.R0' 177 | StrCpy $InstDir $initDestination 178 | 179 | # 创建互斥防止重复运行 180 | System::Call `kernel32::CreateMutex(i0,i0,t"foobox_installer")i.r1?e` 181 | Pop $R0 182 | StrCmp $R0 0 +3 183 | MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经运行!" 184 | Abort 185 | FunctionEnd 186 | 187 | Function .onVerifyInstDir 188 | IfFileExists $INSTDIR\foobar2000.exe PathGood 189 | Abort 190 | PathGood: 191 | FunctionEnd 192 | 193 | Function Check_Dir 194 | SetShellVarContext current 195 | ${If} $initDestination != "" 196 | StrCpy $InstDir $initDestination 197 | ${Else} 198 | ReadRegStr $INSTDIR HKLM "Software\foobar2000" "InstallDir" 199 | ${EndIf} 200 | FunctionEnd 201 | 202 | Function Dir_Leave 203 | StrCpy $PortableMode 0 204 | IfFileExists $INSTDIR\portable_mode_enabled 0 +2 205 | StrCpy $PortableMode 1 206 | ${If} $PortableMode = 0 207 | StrCpy $ProfileDir "$APPDATA\foobar2000-v2" 208 | ${Else} 209 | StrCpy $ProfileDir "$InstDir\profile" 210 | ${EndIf} 211 | FunctionEnd 212 | 213 | Function OptionsPageCreate 214 | Call CheckUser 215 | StrCpy $initDestination $InstDir ; If the user clicks BACK on the directory page we will remember their mode specific directory 216 | !insertmacro MUI_HEADER_TEXT "选项及注意事项" "重要提示: 务必先安装 32 位版本的 foobar2000 及 foobox 主题." 217 | nsDialogs::Create 1018 218 | ${NSD_CreateLabel} 10u 0u 90% 10u "安装或升级视频组件和布局不会更改 foobar2000 的核心设置,可放心覆盖." 219 | 220 | ${If} $noAdmin = 1 221 | ;SectionSetFlags ${LastfmHosts} 0 222 | ;SectionSetText ${LastfmHosts} "" 223 | ${NSD_CreateLabel} 10u 15u 90% 20u "* 您没有管理员权限,一些次要设定会被忽略,这并不影响向 foobar2000 添加视频播放支持." 224 | ${EndIf} 225 | ${NSD_CreateCheckbox} 10u 40u 90% 10u "安装到 foobar2000 1.x 版" 226 | Pop $VersionCheckbox 227 | ${If} $initVersion = "1" 228 | ${NSD_Check} $VersionCheckbox 229 | ${EndIf} 230 | ${NSD_CreateLabel} 20u 50u 90% 20u "如果您是给旧版的 foobar2000 v1.x 安装 foobox, 请务必勾选此项." 231 | ${NSD_CreateCheckbox} 10u 80u 90% 10u "不安装任何配置文件" 232 | Pop $CfgCheckbox 233 | ${If} $noConfig = 1 234 | ${NSD_Check} $CfgCheckbox 235 | ${EndIf} 236 | ${NSD_CreateLabel} 20u 92u 90% 30u "如果勾选, 视频组件 input_ffmpeg, foo_youtube, foo_mpv 的 cfg 文件将不会安装. 谨慎, 不确定请勿勾选!" 237 | nsDialogs::Show 238 | FunctionEnd 239 | 240 | Function OptionsPageLeave 241 | ${NSD_GetState} $VersionCheckbox $0 242 | ${If} $0 = ${BST_CHECKED} 243 | StrCpy $initVersion "1" 244 | StrCpy $PortableMode 1 245 | IfFileExists $INSTDIR\user_profiles_enabled 0 +2 246 | StrCpy $PortableMode 2 247 | ${If} $PortableMode = 2 248 | StrCpy $ProfileDir "$APPDATA\foobar2000" 249 | ${Else} 250 | StrCpy $ProfileDir "$InstDir\profile" 251 | ${EndIf} 252 | ${Else} 253 | StrCpy $initVersion "2" 254 | ${EndIf} 255 | ${NSD_GetState} $CfgCheckbox $0 256 | ${If} $0 = ${BST_CHECKED} 257 | StrCpy $noConfig 1 258 | ${Else} 259 | StrCpy $noConfig 0 260 | ${EndIf} 261 | FunctionEnd 262 | 263 | Function Inst_pre 264 | IfFileExists $ProfileDir\foobox PathGood 265 | MessageBox MB_OK "foobar2000 里未找到 foobox 主题,请取消本安装并先下载和安装 foobox 主题!" 266 | Abort 267 | PathGood: 268 | ExecWait "$\"$INSTDIR\foobar2000.exe$\" /quiet /quit" 269 | FunctionEnd 270 | 271 | Function CheckUser 272 | Pop $0 273 | Pop $R0 274 | ReadEnvStr $R0 "USERNAME" 275 | ${GetUserLevel} $0 $R0 276 | ${If} $0 != 2 277 | StrCpy $noAdmin 1 278 | ${Else} 279 | StrCpy $noAdmin 0 280 | ${EndIf} 281 | FunctionEnd 282 | 283 | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN 284 | !insertmacro MUI_DESCRIPTION_TEXT ${fooffmpeg} "封装和调用自定义的 ffmpeg 解码器, 以使 foobar2000 能识别和播放视频格式." 285 | !insertmacro MUI_DESCRIPTION_TEXT ${VideoYoutube} "foo-youtube 视频组件及面板布局及其附加程序." 286 | !insertmacro MUI_DESCRIPTION_TEXT ${VideoMPV} "foo-mpv 视频组件及面板布局." 287 | !insertmacro MUI_FUNCTION_DESCRIPTION_END 288 | -------------------------------------------------------------------------------- /bakup/nsis/video.foobox.cn64.nsi: -------------------------------------------------------------------------------- 1 | Unicode true 2 | 3 | # Include 4 | !include "MUI2.nsh" 5 | !include "nsDialogs.nsh" 6 | !include "GetUserLevel.nsh" 7 | 8 | #Var 9 | Var PortableMode 10 | Var ProfileDir 11 | Var CfgCheckbox 12 | Var noAdmin 13 | Var noConfig 14 | Var initDestination 15 | 16 | #APP 17 | !define /date ComplieTime "%y%m%d" 18 | !define FBOX_VER "8" 19 | !define VER_DATE "20${ComplieTime}" 20 | !define BUILD_NUM "1" 21 | 22 | # Setup 23 | Name "foobox 视频面板" 24 | OutFile "foobox8-video_x64.cn.${VER_DATE}.exe" 25 | # VerInfo 26 | VIProductVersion "${VER_DATE}.0.0.${BUILD_NUM}" 27 | VIAddVersionKey "ProductName" "foobox video" 28 | VIAddVersionKey "FileDescription" "video panels for foobox theme of foobar2000" 29 | VIAddVersionKey "LegalCopyright" "https://github.com/dream7180" 30 | VIAddVersionKey "FileVersion" "${VER_DATE}" 31 | VIAddVersionKey "ProductVersion" "${VER_DATE}.0" 32 | 33 | # Compile 34 | SetCompressor /SOLID lzma 35 | SetCompressorDictSize 32 36 | SetDatablockOptimize on 37 | SetOverwrite try 38 | SetFont "Microsoft Yahei" 9 39 | 40 | # Runtime 41 | Caption "安装视频组件和布局到 foobox v${FBOX_VER} 主题" 42 | RequestExecutionLevel highest 43 | ShowInstDetails show 44 | DirText "安装程序会自动检测 foobar2000 的安装路径,如果检测不到或要安装到别的 foobar2000 所在目录,请点击 [浏览(B)...] 并选择合适的文件夹。" "" "" "选择 foobar2000 的根目录来安装 $(^NameDA):" 45 | BrandingText "NSIS v3" 46 | 47 | # --- MUI Settings Start --- 48 | ReserveFile ".\common\installer\installer.ico" 49 | ReserveFile ".\common\installer\boxvideo.bmp" 50 | 51 | # MUI 52 | !define MUI_UI_COMPONENTSPAGE_SMALLDESC "${NSISDIR}\Contrib\UIs\modern_smalldesc.exe" 53 | !define MUI_COMPONENTSPAGE_SMALLDESC 54 | 55 | # Icon 56 | !define MUI_ICON ".\common\installer\installer.ico" 57 | # Bitmap 58 | !define MUI_WELCOMEFINISHPAGE_BITMAP ".\common\installer\boxvideo.bmp" 59 | 60 | # - InstallPage - 61 | !define MUI_ABORTWARNING 62 | 63 | !define MUI_WELCOMEPAGE_TEXT "\ 64 | 本程序将安装额外的视频面板及其支持组件到集成有 foobox 7 主题 (x64) 的 foobar2000 音频播放器.$\n$\n\ 65 | 本程序不包含 foobar2000 程序及 foobox 7 主题,安装前您应该已安装有 foobar2000 播放器 (x64版) 并整合了 foobox 7 DUI 主题." 66 | 67 | !define MUI_WELCOMEPAGE_LINK "访问 github 上的 foobox 项目" 68 | !define MUI_WELCOMEPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn" 69 | !insertmacro MUI_PAGE_WELCOME 70 | 71 | # DirectoryPage 72 | !define MUI_PAGE_CUSTOMFUNCTION_PRE Check_Dir 73 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Dir_Leave 74 | !define MUI_TEXT_DIRECTORY_SUBTITLE "选择 foobar2000.exe 程序所在的目录来安装 $(^NameDA)。" 75 | !insertmacro MUI_PAGE_DIRECTORY 76 | 77 | #extra option page 78 | Page Custom OptionsPageCreate OptionsPageLeave 79 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Inst_pre 80 | !insertmacro MUI_PAGE_COMPONENTS 81 | !insertmacro MUI_PAGE_INSTFILES 82 | !define MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) 已经成功安装到 foobar2000。$\r$\n文件和组件位于 foobar2000 的程序和用户数据目录,卸载 foobar2000 时可以一并移除。$\r$\n$\r$\n你现在可以在 foobar2000 主菜单“视图 - 布局 - 快速设置”里找到带视频面板的布局。$\r$\n$\r$\n点击 [完成(F)] 关闭安装程序。" 83 | !define MUI_FINISHPAGE_LINK "访问 github 上的 foobox 项目" 84 | !define MUI_FINISHPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn" 85 | !insertmacro MUI_PAGE_FINISH 86 | #language 87 | !insertmacro MUI_LANGUAGE "SimpChinese" 88 | 89 | # --- Install Section --- 90 | 91 | Section "foo_input_ffmpeg 解码器封装组件" fooffmpeg 92 | SectionIn RO 93 | SetOutPath "$ProfileDir\user-components-x64\foo_input_ffmpeg" 94 | File ".\cn\vx64\profile\user-components-x64\foo_input_ffmpeg\*.*" 95 | ${If} $noConfig = 0 96 | SetOutPath "$ProfileDir\configuration" 97 | File ".\cn\vxcommon\profile\configuration\foo_input_ffmpeg.dll.cfg" 98 | ${EndIf} 99 | SetOutPath "$INSTDIR\encoders\ffmpeg" 100 | File /r ".\common\vx64\profile\foo_youtube\ffmpeg\*.*" 101 | Delete "$INSTDIR\themes\foobox*.fth" 102 | SectionEnd 103 | 104 | Section "视频面板 foo-youtube" VideoYoutube 105 | ;SectionIn 2 106 | 107 | ;remove old version files 108 | #IfFileExists "$INSTDIR\encoders\LAVFilters" 0 +6 109 | #${If} $noAdmin = 0 110 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVSplitter.ax" 111 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVVideo.ax" 112 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVAudio.ax" 113 | #${EndIf} 114 | #RMDir /r "$INSTDIR\encoders" 115 | #RMDir /r "$ProfileDir\foo_youtube" 116 | ;install new file 117 | SetOutPath "$ProfileDir\user-components-x64\foo_youtube" 118 | File ".\common\vx64\profile\user-components-x64\foo_youtube\*.*" 119 | File ".\common\vxcommon\foo_youtube\*.*" 120 | ${If} $noConfig = 0 121 | SetOutPath "$ProfileDir" 122 | File ".\cn\vx64\profile\theme.fth" 123 | SetOutPath "$ProfileDir\configuration" 124 | ${If} $noAdmin = 0 125 | File /oname=foo_youtube.dll.cfg ".\cn\vxcommon\profile\configuration\foo_youtube_admin.dll.cfg" 126 | ${Else} 127 | File /oname=foo_youtube.dll.cfg ".\cn\vxcommon\profile\configuration\foo_youtube_noadmin.dll.cfg" 128 | ${EndIf} 129 | ${EndIf} 130 | SetOutPath "$INSTDIR\themes" 131 | File ".\cn\vx64\themes\foobox8 + 简介 + 视频(youtube).fth" 132 | File ".\cn\vx64\themes\foobox8 + 视频(youtube).fth" 133 | SetOutPath "$ProfileDir\foo_youtube" 134 | File /r ".\common\vx64\profile\foo_youtube\*.*" 135 | File /r ".\cn\vx64\profile\foo_youtube\*.*" 136 | File ".\common\vxcommon\youtube-dl.exe" 137 | ${If} $noAdmin = 0 138 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVSplitter.ax"' 139 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVVideo.ax"' 140 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVAudio.ax"' 141 | ${EndIf} 142 | SetOutPath "$INSTDIR" 143 | ${If} $PortableMode = 0 144 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_0.bat" 145 | ${Else} 146 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_1.bat" 147 | ;${Else} 148 | ; File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_2.bat" 149 | ${EndIf} 150 | SectionEnd 151 | 152 | Section /o "视频面板 foo-mpv" VideoMPV 153 | SetOutPath "$ProfileDir\user-components-x64\foo_mpv" 154 | File /r ".\cn\vx64\profile\user-components-x64\foo_mpv\*.*" 155 | ${If} $noConfig = 0 156 | SetOutPath "$ProfileDir\configuration" 157 | File ".\cn\vxcommon\profile\configuration\foo_mpv.dll.cfg" 158 | ${EndIf} 159 | SetOutPath "$INSTDIR\themes" 160 | File ".\cn\vx64\themes\foobox8 + 简介 + 视频(mpv).fth" 161 | File ".\cn\vx64\themes\foobox8 + 视频(mpv).fth" 162 | SetOutPath "$ProfileDir\mpv" 163 | File /r ".\cn\vxcommon\profile\mpv\*.*" 164 | SectionEnd 165 | 166 | /* 167 | Section -Post 168 | # 获取安装目录读写权限 169 | AccessControl::GrantOnFile "$INSTDIR" "(BU)" "FullAccess" 170 | Delete "$INSTDIR\lastfmhosts.bat" 171 | SectionEnd 172 | */ 173 | Function .onInit 174 | System::Call 'SHCore::SetProcessDpiAwareness(i 1)i.R0' 175 | StrCpy $InstDir $initDestination 176 | 177 | # 创建互斥防止重复运行 178 | System::Call `kernel32::CreateMutex(i0,i0,t"foobox_installer")i.r1?e` 179 | Pop $R0 180 | StrCmp $R0 0 +3 181 | MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经运行!" 182 | Abort 183 | FunctionEnd 184 | 185 | Function .onVerifyInstDir 186 | IfFileExists $INSTDIR\foobar2000.exe PathGood 187 | Abort 188 | PathGood: 189 | FunctionEnd 190 | 191 | Function Check_Dir 192 | SetShellVarContext current 193 | ${If} $initDestination != "" 194 | StrCpy $InstDir $initDestination 195 | ${Else} 196 | SetRegView 64 197 | ReadRegStr $INSTDIR HKLM "Software\foobar2000" "InstallDir" 198 | ${EndIf} 199 | FunctionEnd 200 | 201 | Function Dir_Leave 202 | StrCpy $PortableMode 0 203 | IfFileExists $INSTDIR\portable_mode_enabled 0 +2 204 | StrCpy $PortableMode 1 205 | ${If} $PortableMode = 0 206 | StrCpy $ProfileDir "$APPDATA\foobar2000-v2" 207 | ${Else} 208 | StrCpy $ProfileDir "$InstDir\profile" 209 | ${EndIf} 210 | FunctionEnd 211 | 212 | Function OptionsPageCreate 213 | Call CheckUser 214 | StrCpy $initDestination $InstDir ; If the user clicks BACK on the directory page we will remember their mode specific directory 215 | !insertmacro MUI_HEADER_TEXT "选项及注意事项" "重要提示: 务必先安装 64 位版本的 foobar2000 及 foobox 主题." 216 | nsDialogs::Create 1018 217 | ${NSD_CreateLabel} 10u 0u 90% 10u "安装或升级视频组件和布局不会更改 foobar2000 的核心设置,可放心覆盖." 218 | 219 | ${If} $noAdmin = 1 220 | ;SectionSetFlags ${LastfmHosts} 0 221 | ;SectionSetText ${LastfmHosts} "" 222 | ${NSD_CreateLabel} 10u 15u 90% 20u "* 您没有管理员权限,一些次要设定会被忽略,这并不影响向 foobar2000 添加视频播放支持." 223 | ${EndIf} 224 | ${NSD_CreateCheckbox} 10u 60u 90% 10u "不安装任何配置文件" 225 | Pop $CfgCheckbox 226 | ${If} $noConfig = 1 227 | ${NSD_Check} $CfgCheckbox 228 | ${EndIf} 229 | ${NSD_CreateLabel} 20u 72u 90% 30u "如果勾选, 视频组件 input_ffmpeg, foo_youtube, foo_mpv 的 cfg 文件将不会安装. 谨慎, 不确定请勿勾选!" 230 | nsDialogs::Show 231 | FunctionEnd 232 | 233 | Function OptionsPageLeave 234 | ${NSD_GetState} $CfgCheckbox $0 235 | ${If} $0 = ${BST_CHECKED} 236 | StrCpy $noConfig 1 237 | ${Else} 238 | StrCpy $noConfig 0 239 | ${EndIf} 240 | FunctionEnd 241 | 242 | Function Inst_pre 243 | IfFileExists $ProfileDir\foobox PathGood 244 | MessageBox MB_OK "foobar2000 里未找到 foobox 主题,请取消本安装并先下载和安装 foobox 主题!" 245 | Abort 246 | PathGood: 247 | ExecWait "$\"$INSTDIR\foobar2000.exe$\" /quiet /quit" 248 | FunctionEnd 249 | 250 | Function CheckUser 251 | Pop $0 252 | Pop $R0 253 | ReadEnvStr $R0 "USERNAME" 254 | ${GetUserLevel} $0 $R0 255 | ${If} $0 != 2 256 | StrCpy $noAdmin 1 257 | ${Else} 258 | StrCpy $noAdmin 0 259 | ${EndIf} 260 | FunctionEnd 261 | 262 | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN 263 | !insertmacro MUI_DESCRIPTION_TEXT ${fooffmpeg} "封装和调用自定义的 ffmpeg 解码器, 以使 foobar2000 能识别和播放视频格式." 264 | !insertmacro MUI_DESCRIPTION_TEXT ${VideoYoutube} "foo-youtube 视频组件及面板布局及其附加程序." 265 | !insertmacro MUI_DESCRIPTION_TEXT ${VideoMPV} "foo-mpv 视频组件及面板布局." 266 | !insertmacro MUI_FUNCTION_DESCRIPTION_END 267 | -------------------------------------------------------------------------------- /bakup/scriptWin7/styles.css: -------------------------------------------------------------------------------- 1 | body { color: WINDOWTEXT; background-color: THREEDFACE; } 2 | input { font:caption; border: 1px solid #7A7A7A; width: 100%; } 3 | input:focus { outline: none !important; border:1px solid #0078D7; } 4 | input:hover:focus { outline: none !important; border:1px solid #0078D7; } 5 | input:hover { outline: none !important; border:1px solid #000000; } 6 | label { font:caption; } 7 | button { font:caption; background: #E1E1E1; color:ButtonText; border: 1px solid #ADADAD; margin: 5px; padding: 5px; width: 90px; } 8 | button:focus { border: 1px solid #0078D7; padding: 5px; } 9 | button:hover { background: #e5f1fb; border: 1px solid #0078D7; padding: 5px; } 10 | button:focus:hover { background: #e5f1fb; border:1px solid #0078D7; padding: 5px; } 11 | button[disabled] { background: #CCCCCC; color:#EBEBE4; } 12 | /* --Suppress button:hover manually, since not() is not working =( */ 13 | button[disabled]:hover { border: 1px solid #ADADAD; padding: 5px; } -------------------------------------------------------------------------------- /bakup/shortcut.js: -------------------------------------------------------------------------------- 1 | function ShortcutMask(mask, vkey) { 2 | switch (mask) { 3 | case KMask.ctrl: 4 | switch (vkey){ 5 | case 65:// CTRL+A 6 | fb.RunMainMenuCommand("编辑/全选"); 7 | break; 8 | case 70:if// CTRL+F 9 | fb.RunMainMenuCommand("编辑/搜索"); 10 | break; 11 | case 78:// CTRL+N 12 | fb.RunMainMenuCommand("文件/新建播放列表"); 13 | break; 14 | case 79:// CTRL+O 15 | fb.RunMainMenuCommand("文件/打开..."); 16 | break; 17 | case 80:// CTRL+P 18 | fb.RunMainMenuCommand("文件/参数选项"); 19 | break; 20 | case 83:// CTRL+S 21 | fb.RunMainMenuCommand("文件/保存播放列表..."); 22 | break; 23 | case 85:// CTRL+U 24 | fb.RunMainMenuCommand("文件/添加位置..."); 25 | break; 26 | case 87:// CTRL+W 27 | fb.RunMainMenuCommand("文件/移除播放列表"); 28 | break; 29 | } 30 | break; 31 | case KMask.alt: 32 | switch (vkey) { 33 | case 65:// ALT+A 34 | fb.RunMainMenuCommand("视图/总在最上面"); 35 | break; 36 | case 108:// ALT+A 37 | fb.RunMainMenuCommand("属性"); 38 | break; 39 | case 115://Alt+F4 40 | fb.RunMainMenuCommand("文件/退出"); 41 | break; 42 | }; 43 | break; 44 | } 45 | } 46 | 47 | function ShortcutMaskEn(mask, vkey) { 48 | switch (mask) { 49 | case KMask.ctrl: 50 | switch (vkey){ 51 | case 65:// CTRL+A 52 | fb.RunMainMenuCommand("Edit/Select all"); 53 | break; 54 | case 70:if// CTRL+F 55 | fb.RunMainMenuCommand("Edit/Search"); 56 | break; 57 | case 78:// CTRL+N 58 | fb.RunMainMenuCommand("File/New playlist"); 59 | break; 60 | case 79:// CTRL+O 61 | fb.RunMainMenuCommand("File/Open..."); 62 | break; 63 | case 80:// CTRL+P 64 | fb.RunMainMenuCommand("File/Preferences"); 65 | break; 66 | case 83:// CTRL+S 67 | fb.RunMainMenuCommand("File/Save playlist..."); 68 | break; 69 | case 85:// CTRL+U 70 | fb.RunMainMenuCommand("File/Add location..."); 71 | break; 72 | case 87:// CTRL+W 73 | fb.RunMainMenuCommand("File/Remove playlist"); 74 | break; 75 | } 76 | break; 77 | case KMask.alt: 78 | switch (vkey) { 79 | case 65:// ALT+A 80 | fb.RunMainMenuCommand("View/Always on Top"); 81 | break; 82 | case 108:// ALT+A 83 | fb.RunMainMenuCommand("Properties"); 84 | break; 85 | case 115://Alt+F4 86 | fb.RunMainMenuCommand("File/Exit"); 87 | break; 88 | }; 89 | break; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/LICENSE.txt: -------------------------------------------------------------------------------- 1 | License 2 | 3 | Copyright (c) 2021-2024 WilB 4 | 5 | The above copyright notice shall be included in all 6 | copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 9 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 10 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 11 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 12 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 13 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 14 | SOFTWARE. -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/confirm.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 |
22 |
23 | 24 | 25 |
26 | 78 | 79 | -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/input.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 |
24 |
25 |
26 | 27 | 28 |
29 | 87 | 88 | -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/inputApply.notUsed: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 |
24 |
25 |
26 | 27 | 28 | 29 |
30 | 91 | 92 | -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/styles10.css: -------------------------------------------------------------------------------- 1 | body {color:WindowText; background-color:Menu; font:caption;} 2 | input {font:caption; border:1px solid #7A7A7A; width:100%;} 3 | input:focus {outline:none !important; border:1px solid #0078D7;} 4 | input:hover:focus {outline:none !important; border:1px solid #0078D7;} 5 | input:hover {outline:none !important; border:1px solid #000000;} 6 | label {font:caption;} 7 | button {font:caption; background:#E1E1E1; color:ButtonText; border:1px solid #ADADAD; margin:5px; padding:3px; width:auto; min-width:4.4em; display:inline-block;} 8 | button:focus {outline:none !important; border:2px solid #0078D7; padding:2px;} 9 | button:hover {background:#e5f1fb; outline:none !important; border:1px solid #0078D7; padding:3px;}div {overflow:hidden;} 10 | button:focus:hover {background:#e5f1fb; outline:none !important; border:2px solid #0078D7; padding:2px;} span {display:block; overflow:hidden; padding-right:10px;} 11 | button[disabled] {background:#CCCCCC; color:#EBEBE4;} 12 | /* --Suppress button:hover manually, since not() is not working =( */ 13 | button[disabled]:hover {border:1px solid #ADADAD; padding:3px;} -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/styles7.css: -------------------------------------------------------------------------------- 1 | body {color:WindowText; background-color:Menu; font:caption;} 2 | input {font:caption; border:1px solid #7A7A7A; width:100%;} 3 | input:focus {outline:none !important; border:1px solid #0078D7;} 4 | input:hover:focus {outline:none !important; border:1px solid #0078D7;} 5 | input:hover {outline:none !important; border:1px solid #000000;} 6 | label {font:caption;} 7 | button {font:caption; background:#E1E1E1; color:ButtonText; border:1px solid #ADADAD; margin:5px; padding:3px; width:auto; min-width:4.4em; display:inline-block;} 8 | button:focus {border:1px solid #0078D7; padding:3px;} 9 | button:hover {background:#e5f1fb; border:1px solid #0078D7; padding:3px;} 10 | button:focus:hover {background:#e5f1fb; border:1px solid #0078D7; padding:3px;} 11 | button[disabled] {background:#CCCCCC; color:#EBEBE4;} 12 | /* --Suppress button:hover manually, since not() is not working =( */ 13 | button[disabled]:hover {border:1px solid #ADADAD; padding:3px;} -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/Logo.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ad.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ae.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/af.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/af.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ag.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ai.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/al.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/am.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/am.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ao.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/aq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/aq.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ar.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/as.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/at.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/au.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/aw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/aw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ax.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/az.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/az.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ba.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bb.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bd.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/be.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bf.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bh.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bi.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bj.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bl.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bo.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bq.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/br.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bs.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bt.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bv.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/by.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/by.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ca.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cc.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cd.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cf.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ch.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ci.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ci.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ck.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cl.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/co.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/co.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cu.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cv.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cx.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cy.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/de.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dj.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/do.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ec.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ee.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eh.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/er.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/er.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/es.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/et.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/et.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eu.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fi.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fj.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fo.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ga.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-eng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-eng.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-nir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-nir.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-sct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-sct.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-wls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-wls.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gd.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ge.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gf.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gh.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gi.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gl.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gp.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gq.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gs.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gt.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gu.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gy.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ht.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hu.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/id.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ie.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/il.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/il.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/im.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/im.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/in.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/io.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/io.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/iq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/iq.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ir.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/is.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/is.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/it.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/je.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/je.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jo.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jp.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ke.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kh.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ki.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/km.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/km.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kp.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ky.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/la.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/la.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lb.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lc.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/li.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/li.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ls.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lt.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lu.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lv.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ly.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ma.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mc.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/md.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/md.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/me.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mf.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mh.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ml.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mo.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mp.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mq.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ms.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mt.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mu.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mv.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mx.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/my.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/na.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/na.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nc.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ne.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nf.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ng.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ni.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nl.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/no.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/np.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/np.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nu.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/om.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/om.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pa.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pe.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pf.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ph.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pl.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ps.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pt.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/py.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/qa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/qa.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/re.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/re.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ro.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/rs.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ru.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/rw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/rw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sa.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sb.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sc.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sd.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/se.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sh.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/si.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/si.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sj.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sl.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/so.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/so.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ss.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/st.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sv.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sx.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sy.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tc.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/td.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/td.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tf.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/th.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/th.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tj.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tl.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/to.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tr.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tt.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tv.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ua.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ug.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/um.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/um.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/us.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/uy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/uy.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/uz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/uz.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/va.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/va.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vc.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ve.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vg.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vi.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vn.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vu.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/wf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/wf.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ws.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/xk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/xk.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ye.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/yt.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/za.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/za.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/zm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/zm.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/zw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/zw.png -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/licences/licences.txt: -------------------------------------------------------------------------------- 1 | ========== Weighted Damerau–Levenshtein distance ========== 2 | 3 | Copyright 2019 Marek Suppa 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | 17 | 18 | 19 | ========== fastest-levenshtein ========== 20 | 21 | MIT License 22 | 23 | Copyright (c) 2020 Kasper Unn Weihe 24 | 25 | 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: 26 | 27 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 28 | 29 | 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. 30 | 31 | 32 | 33 | ========== FuzzySet ========== 34 | 35 | # [The Prosperity Public License 3.0.0](https://prosperitylicense.com/) 36 | 37 | Contributor: Glen Chiacchieri 38 | 39 | Source Code: http://github.com/Glench/fuzzyset.js 40 | 41 | ## Purpose 42 | 43 | This license allows you to use and share this software for noncommercial purposes for free and to try this software for commercial purposes for thirty days. 44 | 45 | ## Agreement 46 | 47 | In order to receive this license, you have to agree to its rules. Those rules are both obligations under that agreement and conditions to your license. Don't do anything with this software that triggers a rule you can't or won't follow. 48 | 49 | ## Notices 50 | 51 | Make sure everyone who gets a copy of any part of this software from you, with or without changes, also gets the text of this license and the contributor and source code lines above. 52 | 53 | ## Commercial Trial 54 | 55 | Limit your use of this software for commercial purposes to a thirty-day trial period. If you use this software for work, your company gets one trial period for all personnel, not one trial per person. 56 | 57 | ## Contributions Back 58 | 59 | Developing feedback, changes, or additions that you contribute back to the contributor on the terms of a standardized public software license such as [the Blue Oak Model License 1.0.0](https://blueoakcouncil.org/license/1.0.0), [the Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html), [the MIT license](https://spdx.org/licenses/MIT.html), or [the two-clause BSD license](https://spdx.org/licenses/BSD-2-Clause.html) doesn't count as use for a commercial purpose. 60 | 61 | ## Personal Uses 62 | 63 | Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, doesn't count as use for a commercial purpose. 64 | 65 | ## Noncommercial Organizations 66 | 67 | Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution doesn't count as use for a commercial purpose regardless of the source of funding or obligations resulting from the funding. 68 | 69 | ## Defense 70 | 71 | Don't make any legal claim against anyone accusing this software, with or without changes, alone or with other technology, of infringing any patent. 72 | 73 | ## Copyright 74 | 75 | The contributor licenses you to do everything with this software that would otherwise infringe their copyright in it. 76 | 77 | ## Patent 78 | 79 | The contributor licenses you to do everything with this software that would otherwise infringe any patents they can license or become able to license. 80 | 81 | ## Reliability 82 | 83 | The contributor can't revoke this license. 84 | 85 | ## Excuse 86 | 87 | You're excused for unknowingly breaking [Notices](#notices) if you take all practical steps to comply within thirty days of learning you broke the rule. 88 | 89 | ## No Liability 90 | 91 | ***As far as the law allows, this software comes as is, without any warranty or condition, and the contributor won't be liable to anyone for any damages related to this software or this license, under any kind of legal claim.*** 92 | 93 | 94 | 95 | ========== Original code used in allmusic composition matching ========== 96 | 97 | Copyright 2021 Miguel A. Arroyo 98 | 99 | 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: 100 | 101 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 102 | 103 | 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 104 | 105 | 106 | ========== YaMD5 ========== 107 | 108 | The MIT License (MIT) 109 | 110 | Copyright (C) 2014 Raymond Hill 111 | 112 | 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. 113 | 114 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, 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 INTHE SOFTWARE. -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/main.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | if (typeof my_utils === 'undefined') include('utils.js'); 4 | 5 | const loadAsync = false; // window.GetProperty('Load Biography Asynchronously', true); // changed to false: issue on loading fth with many panels 6 | 7 | async function readFiles(files) { 8 | for (const file of files) { 9 | if (window.ID) { // fix pss issue 10 | await include(my_utils.getScriptPath + file); 11 | } 12 | } 13 | } 14 | 15 | const files = [ 16 | 'helpers.js', 17 | 'properties.js', 18 | 'settings.js', 19 | 'interface.js', 20 | 'language.js', 21 | 'panel.js', 22 | 'server.js', 23 | 'allmusic.js', 24 | 'lastfm.js', 25 | 'wikipedia.js', 26 | 'names.js', 27 | 'scrollbar.js', 28 | 'buttons.js', 29 | 'menu.js', 30 | 'text.js', 31 | 'lyrics.js', 32 | 'tagger.js', 33 | 'resize.js', 34 | 'library.js', 35 | 'images.js', 36 | 'filmstrip.js', 37 | 'timers.js', 38 | 'popupbox.js', 39 | 'initialise.js', 40 | 'callbacks.js' 41 | ]; 42 | 43 | if (loadAsync) { 44 | readFiles(files).then(() => { 45 | if (!window.ID) return; // fix pss issue 46 | on_size(); 47 | window.Repaint(); 48 | }); 49 | } else { 50 | files.forEach(v => include(my_utils.getScriptPath + v)); 51 | } -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "WilB(汉化:always beta)", 3 | "description": "功能丰富的多合一简介插件\r\n\r\n下载并显示来自 Last.fm、AllMusic 和维基百科的艺术家照片、简介和评论\r\n\r\n• 主要艺术家,相似艺术家、贡献艺术家、表演者和作曲家等\r\n\r\n• 主要专辑和热门专辑\r\n\r\n• 历史记录\r\n\r\n• 歌词\r\n\r\n• 文本阅读器\r\n\r\n• 项目属性\r\n\r\n• 正在播放显示\r\n\r\n• 布局预设:上、左、右、下 和 叠加。可使用自由式布局进行完全自定义\r\n\r\n• 主题:用户界面、深色、混合、浅色和随机\r\n\r\n• 自定义颜色和字体\r\n\r\n• 幻灯片显示:上、左、右、下 或 隐藏\r\n\r\n• 图像+文本、仅图像或仅文本\r\n\n• 拖动调整图像和幻灯片的大小(在面板具有焦点时按 Ctrl 键)\r\n\r\n• 用于字段重新映射和保存位置的自定义标题格式\r\n\r\n• 以及更多...", 4 | "enableDragDrop": false, 5 | "id": "{BA9557CE-7B4B-4E0E-9373-99F511E81252}", 6 | "name": "简介", 7 | "shouldGrabFocus": true, 8 | "version": "1.4.2" 9 | } -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/initialise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const ui = new UserInterface; 4 | const vk = new Vkeys; 5 | const panel = new Panel; 6 | const name = new Names; 7 | const alb_scrollbar = new Scrollbar; 8 | const art_scrollbar = new Scrollbar; 9 | const art_scroller = new Scrollbar; 10 | const cov_scroller = new Scrollbar; 11 | const but = new Buttons; 12 | const popUpBox = new PopUpBox; 13 | const txt = new Text; 14 | const tag = new Tagger; 15 | const resize = new ResizeHandler; 16 | const lib = new Library; 17 | const img = new Images; 18 | const seeker = new Seeker; 19 | const filmStrip = new FilmStrip; 20 | const timer = new Timers; 21 | const men = new MenuItems; 22 | const server = new Server; 23 | const infobox = new Infobox; 24 | 25 | let lyrics; 26 | if (panel.id.lyricsSource) lyrics = new Lyrics; 27 | 28 | alb_scrollbar.type = 'alb'; 29 | art_scrollbar.type = 'art'; 30 | art_scroller.type = 'film'; 31 | cov_scroller.type = 'film'; 32 | 33 | timer.image(); 34 | 35 | timer.clear(timer.zSearch); 36 | timer.zSearch.id = setTimeout(() => { 37 | if ($.server && ppt.panelActive) { 38 | server.download(false, {ix:0, focus:false}, {ix:0, focus:false}); server.download(false, {ix:0, focus:true}, {ix:0, focus:true}); 39 | } 40 | timer.zSearch.id = null; 41 | }, 3000); 42 | 43 | if (!ppt.get('Software Notice Checked', false)) fb.ShowPopupMessage('许可证\r\n\r\n版权所有 (c) 2021-2022 WilB\r\n\r\nThe above copyright notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE 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.', '简介'); 44 | ppt.set('Software Notice Checked', true); -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/library.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | class Library { 4 | constructor() { 5 | this.db_lib; 6 | this.update = true; 7 | } 8 | 9 | // Methods 10 | 11 | getLibItems() { 12 | if (!this.update) return this.db_lib; 13 | this.update = false; 14 | this.db_lib = fb.GetLibraryItems(); 15 | return this.db_lib; 16 | } 17 | 18 | inLibrary(type, a, l) { 19 | if (a) a = a.toLowerCase(); 20 | if (l) l = l.toLowerCase(); 21 | switch (type) { 22 | case 1: { 23 | let q = ''; 24 | let ql = ''; 25 | cfg.albartFields.forEach((v, i) => q += (i ? ' OR ' : '') + v + ' IS ' + a); 26 | cfg.albFields.forEach((v, i) => ql += (i ? ' OR ' : '') + v + ' IS ' + l); 27 | const items = $.query(this.getLibItems(), '(' + q + ') AND (' + ql + ')'); 28 | if (!items.Count) return false; 29 | return items.Count; 30 | } 31 | case 2: { 32 | const q = '(' + '"' + cfg.tf.albumArtist + '"' + ' IS ' + a + ') AND ((' + '"' + cfg.tf.album + '"' + ' IS ' + l + ') OR (' + '"' + '$trim($replace($replace(' + cfg.tf.album + ",CD1,,CD2,,CD3,,CD 1,,CD 2,,CD 3,,CD.01,,CD.02,,CD.03,,CD One,,CD Two,,CD Three,,Disc1,,Disc2,,Disc3,,Disc 1,,Disc 2,,Disc 3,,Disc One,,Disc Two,,Disc Three,,Disc I,,Disc II,,Disc III,,'()',,'[]',), , ,'()',,'[]',))" + '"' + ' IS ' + l + '))'; 33 | const items = $.query(this.getLibItems(), q); 34 | if (!items.Count) return false; 35 | return items[0]; 36 | } 37 | default: { 38 | let q = ''; 39 | cfg.artFields.forEach((v, i) => q += (i ? ' OR ' : '') + v + ' IS ' + a); 40 | const items = $.query(this.getLibItems(), q); 41 | if (!items.Count) return false; 42 | return !type ? true : items[0]; 43 | } 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/names.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | class Names { 4 | constructor() { 5 | this.cur_artist = ''; 6 | this.lfmUID = '_[a-f0-9]{32}\\.jpg$'; 7 | } 8 | 9 | // Methods 10 | 11 | alb(focus) { 12 | return $.eval('[$trim(' + cfg.tf.album + ')]', focus); 13 | } 14 | 15 | albID(focus, n) { 16 | if (!this.alb(focus)) return $.eval(cfg.tf.artist + cfg.tf.albumArtist + '%path%', focus); 17 | else switch (n) { 18 | case 'simple': 19 | return $.eval(cfg.tf.artist + cfg.tf.albumArtist + cfg.tf.album, focus); 20 | case 'stnd': 21 | return $.eval(cfg.tf.albumArtist + cfg.tf.album + '%discnumber%%date%', focus); 22 | case 'full': 23 | return $.eval(cfg.tf.artist + cfg.tf.albumArtist + cfg.tf.album + '%discnumber%%date%', focus); 24 | } 25 | } 26 | 27 | albm(focus, ignoreLock) { 28 | return this.albumTidy($.eval('[' + cfg.tf.album + ']', focus, ignoreLock)); 29 | } 30 | 31 | album(focus, ignoreLock) { 32 | if (!cfg.albStrip) return this.albm(focus); 33 | return this.albumClean($.eval('[' + cfg.tf.album + ']', focus, ignoreLock)); 34 | 35 | } 36 | 37 | albumArtist(focus, ignoreLock) { 38 | let albumArtist = $.eval('[$trim(' + cfg.tf.albumArtist + ')]', focus, ignoreLock); 39 | return albumArtist; 40 | } 41 | 42 | albumClean(n) { 43 | return n.replace(/CD(\s*\d|\.0\d)|CD\s*(One|Two|Three)|Dis(c|k)\s*\d|Dis(c|k)\s*(III|II|I|One|Two|Three)\b|(Bonus\s*Track|Collector's|(Digital\s*|Super\s*|)Deluxe|Digital|Expanded|Limited|Platinum|Reissue|Special)\s*(Edition|Version)|(Bonus\s*(CD|Disc))|\d\d\w\w\s*Anniversary\s*(Expanded\s*|Re(-|)master\s*|)(Edition|Re(-|)master|Version)|((19|20)\d\d(\s*|\s*-\s*)|)(Digital(ly|)\s*|)(Re(-|)master(ed|)|Re(-|)recorded)(\s*Edition|\s*Version|)|\(Deluxe\)|\(Mono\)|\(Reissue\)|\(Revisited\)|\(Stereo\)|\(Web\)|\[Deluxe\]|\[Mono\]|\[Reissue\]|\[Revisited\]|\[Stereo\]|\[Web\]/gi, '').replace(/\(\s*\)|\[\s*\]/g, ' ').replace(/\s\s+/g, ' ').replace(/-\s*$/g, ' ').trim(); 44 | } 45 | 46 | albumTidy(n) { 47 | return n.replace(/CD(\s*\d|\.0\d)|CD\s*(One|Two|Three)|Dis(c|k)\s*\d|Dis(c|k)\s*(III|II|I|One|Two|Three)\b/gi, '').replace(/\(\s*\)|\[\s*\]/g, ' ').replace(/\s\s+/g, ' ').replace(/-\s*$/g, ' ').trim(); 48 | } 49 | 50 | artist(focus, ignoreLock) { 51 | let artist = $.eval('[$trim(' + cfg.tf.artist + ')]', focus, ignoreLock); 52 | return artist; 53 | } 54 | 55 | composition(focus, ignoreLock) { 56 | return $.eval('[' + cfg.tf.composition + ']', focus, ignoreLock); 57 | } 58 | 59 | isLfmImg(fn, artist) { 60 | if (artist) { 61 | if (artist != this.cur_artist) { 62 | artist = $.regexEscape($.clean(artist)); 63 | this.cur_artist = artist; 64 | } 65 | return RegExp(`^${artist + this.lfmUID}`, 'i').test(fn); 66 | } else return RegExp(this.lfmUID, 'i').test(fn); 67 | } 68 | 69 | title(focus, ignoreLock) { 70 | let title = $.eval('[$trim(' + cfg.tf.title + ')]', focus, ignoreLock); 71 | return title; 72 | } 73 | 74 | trackID(focus) { 75 | return $.eval(cfg.tf.artist + cfg.tf.title, focus); 76 | } 77 | } -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/popupbox.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | class PopUpBox { 4 | constructor() { 5 | this.getHtmlCode(); 6 | this.ok = true; 7 | this.soFeat = {clipboard: true, gecko: true} 8 | } 9 | 10 | // Methods 11 | 12 | confirm(msg_title, msg_content, btn_yes_label, btn_no_label, height_adjust, h_center, confirm_callback) { 13 | utils.ShowHtmlDialog(0, this.confirmHtmlCode, { 14 | data: [msg_title, msg_content, btn_yes_label, btn_no_label, height_adjust, h_center, confirm_callback] 15 | }); 16 | } 17 | 18 | getHtmlCode() { 19 | let cssPath = `${my_utils.packagePath}/assets/html/`; 20 | if (this.getWindowsVersion() === '6.1') { 21 | cssPath += 'styles7.css'; 22 | } else { 23 | cssPath += 'styles10.css'; 24 | } 25 | this.configHtmlCode = my_utils.getAsset('\\html\\config.html').replace(/href="styles10.css"/i, `href="${cssPath}"`); 26 | this.inputHtmlCode = my_utils.getAsset('\\html\\input.html').replace(/href="styles10.css"/i, `href="${cssPath}"`); 27 | this.confirmHtmlCode = my_utils.getAsset('\\html\\confirm.html').replace(/href="styles10.css"/i, `href="${cssPath}"`); 28 | } 29 | 30 | getWindowsVersion() { 31 | let version = ''; 32 | 33 | try { 34 | version = (WshShell.RegRead('HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\CurrentMajorVersionNumber')).toString(); 35 | version += '.'; 36 | version += (WshShell.RegRead('HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\CurrentMinorVersionNumber')).toString(); 37 | return version; 38 | } catch (e) {} 39 | try { 40 | version = WshShell.RegRead('HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\CurrentVersion'); 41 | return version; 42 | } catch (e) {} 43 | return '6.1'; 44 | } 45 | 46 | config(ppt, cfg, dialogWindow, ok_callback, lang, recycler) { 47 | utils.ShowHtmlDialog(0, this.configHtmlCode, { 48 | data: [ppt, cfg, dialogWindow, window.IsTransparent, ok_callback, this.tf_callback, lang, recycler], 49 | resizable: true 50 | }); 51 | } 52 | 53 | input(title, msg, ok_callback, input, def) { 54 | utils.ShowHtmlDialog(0, this.inputHtmlCode, { 55 | data: [title, msg, '取消', ok_callback, input, def] 56 | }); 57 | } 58 | 59 | isHtmlDialogSupported() { 60 | if (ppt.isHtmlDialogSupported != 2) return ppt.isHtmlDialogSupported; 61 | 62 | if (typeof doc === 'undefined' || !doc) { 63 | this.soFeat.gecko = false; 64 | } 65 | if (this.soFeat.gecko) { 66 | let cache = null; 67 | let clText = 'test'; 68 | try { 69 | cache = doc.parentWindow.clipboardData.getData('Text'); 70 | } catch (e) {} 71 | try { 72 | doc.parentWindow.clipboardData.setData('Text', clText); 73 | clText = doc.parentWindow.clipboardData.getData('Text'); 74 | } catch (e) { 75 | this.soFeat.clipboard = false; 76 | } 77 | if (cache) { // Just in case previous clipboard data is needed 78 | try { 79 | doc.parentWindow.clipboardData.setData('Text', cache); 80 | } catch (e) {} 81 | } 82 | if (clText !== 'test') { 83 | this.soFeat.clipboard = false; 84 | } 85 | } else { 86 | this.soFeat.clipboard = false; 87 | } 88 | 89 | ppt.isHtmlDialogSupported = this.soFeat.gecko && this.soFeat.clipboard || this.isIEInstalled() ? 1 : 0; 90 | if (!ppt.isHtmlDialogSupported) { 91 | const caption = '显示 HTML 对话框'; 92 | const prompt = 93 | `功能检查表明,当前操作系统不支持 Spider Monkey Panel 显示 Html 对话框。 94 | 95 | 这用于显示选项。关闭此对话框时,控制台将显示替代方案。 96 | 97 | 有时,功能检查可能会给出错误的答案。 98 | 99 | 如果你使用的是 Windows 系统,并且支持 Internet Explorer,应该可以工作,请输入 1,然后点击确定。 100 | 101 | 该设置将作为第一项保存在面板属性中,以后可以在那里进行更改。 102 | 103 | 支持-1;不支持-0`; 104 | let ns = ''; 105 | let status = 'ok' 106 | try { 107 | ns = utils.InputBox(0, prompt, caption, ppt.isHtmlDialogSupported, true); 108 | } catch(e) { 109 | status = 'cancel'; 110 | } 111 | if (status != 'cancel') { 112 | ppt.isHtmlDialogSupported = ns == 0 ? 0 : 1; 113 | } 114 | } 115 | return ppt.isHtmlDialogSupported; 116 | } 117 | 118 | isIEInstalled() { 119 | const diskLetters = Array.from(Array(26)).map((e, i) => i + 65).map((x) => `${String.fromCharCode(x)}:\\`); 120 | const paths = ['Program Files\\Internet Explorer\\ieinstal.exe', 'Program Files (x86)\\Internet Explorer\\ieinstal.exe']; 121 | return diskLetters.some(d => { 122 | try { // Needed when permission error occurs and current SMP implementation is broken for some devices.... 123 | return utils.IsDirectory(d) ? paths.some(p => utils.IsFile(d + p)) : false; 124 | } catch (e) {return false;} 125 | }); 126 | } 127 | 128 | tf_callback(tf, tfAll, type, sFind, sReplace) { 129 | return cfg.preview(tf, tfAll, type, sFind, sReplace); 130 | } 131 | } -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/timers.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | class Timers { 4 | constructor() { 5 | ['dl', 'img', 'lyrics', 'sim1', 'sim2', 'source', 'transition', 'tt', 'zSearch'].forEach(v => this[v] = { 6 | id: null 7 | }); 8 | 9 | this.times = [1000, 1000, 1000, 1000, 2000, 4000, 5000, 6000, 7000]; 10 | } 11 | 12 | // Methods 13 | 14 | clear(timer) { 15 | if (timer) clearTimeout(timer.id); 16 | timer.id = null; 17 | } 18 | 19 | decelerating(p_force) { 20 | let counter = 0; 21 | this.clear(this.dl); 22 | const func = () => { 23 | this.res(p_force); 24 | counter++; 25 | if (counter < this.times.length) timer_dl(); 26 | else this.clear(this.dl); 27 | } 28 | const timer_dl = () => { 29 | this.dl.id = setTimeout(func, this.times[counter]); 30 | } 31 | timer_dl(); 32 | } 33 | 34 | image() { 35 | if (!$.server) return; 36 | this.clear(this.img); 37 | this.img.id = setInterval(() => { 38 | img.fresh(); 39 | men.fresh(); 40 | window.NotifyOthers('bio_imgChange', 0); 41 | }, 1000); 42 | } 43 | 44 | res(force) { 45 | window.NotifyOthers('bio_getImg', force); 46 | if ($.server) img.grab(force); 47 | } 48 | 49 | tooltip() { 50 | this.clear(this.tt); 51 | this.tt.id = setTimeout(() => { 52 | txt.deactivateTooltip(); 53 | this.tt.id = null; 54 | }, 5000); 55 | } 56 | } -------------------------------------------------------------------------------- /biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let my_utils = {} 4 | 5 | my_utils.scriptInfo = window.ScriptInfo; 6 | my_utils.packageInfo = utils.GetPackageInfo(my_utils.scriptInfo.PackageId); 7 | my_utils.packagePath = `${my_utils.packageInfo.Directories.Root}/`; 8 | 9 | my_utils.getAsset = assetFile => utils.ReadTextFile(`${my_utils.packageInfo.Directories.Assets}/${assetFile}`); 10 | my_utils.getImageAsset = assetFile => gdi.Image(`${my_utils.packageInfo.Directories.Assets}/images/${assetFile}`); 11 | my_utils.getFlagAsset = assetFile => gdi.Image(`${my_utils.packageInfo.Directories.Assets}/images/flags/${assetFile}`); 12 | my_utils.getScriptPath = `${my_utils.packageInfo.Directories.Scripts}/`; -------------------------------------------------------------------------------- /info/dui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/dui.png -------------------------------------------------------------------------------- /info/nonportable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/nonportable.png -------------------------------------------------------------------------------- /info/portable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/portable.png -------------------------------------------------------------------------------- /info/screenshot-dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/screenshot-dark.jpg -------------------------------------------------------------------------------- /info/screenshot-light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/screenshot-light.jpg -------------------------------------------------------------------------------- /script/html/ConfirmDialog.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 34 | 35 | 36 | 37 |
38 |
39 | 40 | 41 |
42 | 101 | 102 | -------------------------------------------------------------------------------- /script/html/styles.css: -------------------------------------------------------------------------------- 1 | body { color: WINDOWTEXT; background-color: THREEDFACE; } 2 | input { font:caption; border: 1px solid #7A7A7A; width: 100%; } 3 | input:focus { outline: none !important; border:1px solid #0078D7; } 4 | input:hover:focus { outline: none !important; border:1px solid #0078D7; } 5 | input:hover { outline: none !important; border:1px solid #000000; } 6 | label { font:caption; } 7 | button { font:caption; background: #E1E1E1; color:ButtonText; border: 1px solid #ADADAD; margin: 5px; padding: 5px; width: 90px; } 8 | button:focus { outline: none !important; border:2px solid #0078D7; padding: 4px; } 9 | button:hover { background: #e5f1fb; outline: none !important; border:1px solid #0078D7; padding: 5px; }div { overflow: hidden; } 10 | button:focus:hover { background: #e5f1fb; outline: none !important; border:2px solid #0078D7; padding: 4px; }';span { display:block; overflow: hidden; padding-right:10px; } 11 | button[disabled] { background: #CCCCCC; color:#EBEBE4; } 12 | /* --Suppress button:hover manually, since not() is not working =( */ 13 | button[disabled]:hover { border: 1px solid #ADADAD; padding: 5px; } -------------------------------------------------------------------------------- /script/images/cover_default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/script/images/cover_default.jpg -------------------------------------------------------------------------------- /script/images/cover_w.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/script/images/cover_w.jpg -------------------------------------------------------------------------------- /script/images/foobar2000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/script/images/foobar2000.png -------------------------------------------------------------------------------- /script/js_common/Genre.js: -------------------------------------------------------------------------------- 1 | GenrePack = { 2 | "流行": "Pop", 3 | "华语流行": "CPop", 4 | "C-POP": "CPop", 5 | "日语流行": "JPop", 6 | "J-POP": "JPop", 7 | "韩语流行": "KPop", 8 | "K-POP": "KPop", 9 | "摇滚": "Rock", 10 | "经典": "Classical", 11 | "古典": "Classical", 12 | "Classic": "Classical", 13 | "Classik": "Classical", 14 | "动漫": "ACG", 15 | "Anime": "ACG", 16 | "Comic": "ACG", 17 | "Game": "ACG", 18 | "游戏": "ACG", 19 | "Blue": "Blues", 20 | "乡村": "Country", 21 | "其他": "Other", 22 | "其它": "Other", 23 | "电音": "EDM", 24 | "迪斯科": "Disco", 25 | "民谣": "Folk", 26 | "金属": "Metal", 27 | "朋克": "Punk", 28 | "蓝调": "Blues", 29 | "布鲁斯": "Blues", 30 | "纯乐器演奏": "Instrumental", 31 | "器乐": "Instrumental", 32 | "说唱": "Rap", 33 | "嘻哈": "Hip-Hop", 34 | "疯克": "Funk", 35 | "新世纪音乐": "NewAge", 36 | "New Age": "NewAge", 37 | "爵士": "Jazz" 38 | } 39 | 40 | function GetGenre(name){ 41 | var str = GenrePack[name]; 42 | if(!str) str = name; 43 | return str; 44 | } -------------------------------------------------------------------------------- /script/js_common/common.js: -------------------------------------------------------------------------------- 1 | //common script 2 | function RGBA(r, g, b, a) { 3 | return ((a << 24) | (r << 16) | (g << 8) | (b)); 4 | } 5 | function RGB(r, g, b) { 6 | return (0xff000000 | (r << 16) | (g << 8) | (b)) 7 | } 8 | var c_black = RGB(0, 0, 0); 9 | var c_white = RGB(255, 255, 255); 10 | // Textformat 11 | var DT_LEFT = 0x00000000; 12 | var DT_CENTER = 0x00000001; 13 | var DT_RIGHT = 0x00000002; 14 | var DT_TOP = 0x00000000; 15 | var DT_VCENTER = 0x00000004; 16 | var DT_BOTTOM = 0x00000008; 17 | var DT_SINGLELINE = 0x00000020; 18 | var DT_NOCLIP = 0x00000100; 19 | var DT_CALCRECT = 0x00000400; 20 | var DT_END_ELLIPSIS = 0x00008000; 21 | var DT_NOPREFIX = 0x00000800; 22 | 23 | // Flags, used by Menu ---------------------- 24 | var MF_SEPARATOR = 0x00000800; 25 | var MF_ENABLED = 0x00000000; 26 | var MF_GRAYED = 0x00000001; 27 | var MF_DISABLED = 0x00000002; 28 | var MF_UNCHECKED = 0x00000000; 29 | var MF_CHECKED = 0x00000008; 30 | var MF_STRING = 0x00000000; 31 | var MF_POPUP = 0x00000010; 32 | var MF_RIGHTJUSTIFY = 0x00004000; 33 | // Keyboard Flags & Tools 34 | DLGC_WANTALLKEYS = 0x0004; /* Control wants all keys */ 35 | // {{ 36 | var VK_F1 = 0x70; 37 | var VK_F2 = 0x71; 38 | var VK_F3 = 0x72; 39 | var VK_F4 = 0x73; 40 | var VK_F5 = 0x74; 41 | var VK_F6 = 0x75; 42 | var VK_BACK = 0x08; 43 | var VK_TAB = 0x09; 44 | var VK_RETURN = 0x0D; 45 | var VK_SHIFT = 0x10; 46 | var VK_CONTROL = 0x11; 47 | var VK_ALT = 0x12; 48 | var VK_ESCAPE = 0x1B; 49 | var VK_PGUP = 0x21; 50 | var VK_PGDN = 0x22; 51 | var VK_END = 0x23; 52 | var VK_HOME = 0x24; 53 | var VK_LEFT = 0x25; 54 | var VK_UP = 0x26; 55 | var VK_RIGHT = 0x27; 56 | var VK_DOWN = 0x28; 57 | var VK_INSERT = 0x2D; 58 | var VK_DELETE = 0x2E; 59 | var VK_SPACEBAR = 0x20; 60 | var VK_LWIN = 0x5B; 61 | var KMask = { 62 | none: 0, 63 | ctrl: 1, 64 | shift: 2, 65 | ctrlshift: 3, 66 | ctrlalt: 4, 67 | ctrlaltshift: 5, 68 | alt: 6 69 | }; 70 | 71 | function GetKeyboardMask() { 72 | var c = utils.IsKeyPressed(VK_CONTROL) ? true : false; 73 | var a = utils.IsKeyPressed(VK_ALT) ? true : false; 74 | var s = utils.IsKeyPressed(VK_SHIFT) ? true : false; 75 | var ret = KMask.none; 76 | if (c && !a && !s) ret = KMask.ctrl; 77 | if (!c && !a && s) ret = KMask.shift; 78 | if (c && !a && s) ret = KMask.ctrlshift; 79 | if (c && a && !s) ret = KMask.ctrlalt; 80 | if (c && a && s) ret = KMask.ctrlaltshift; 81 | if (!c && a && !s) ret = KMask.alt; 82 | return ret; 83 | }; 84 | // }} 85 | // Used in utils.GetSysColour() 86 | COLOR_WINDOW = 5; 87 | COLOR_HIGHLIGHT = 13; 88 | COLOR_3DFACE = 15;//3dface 89 | COLOR_BTNTEXT = 18; 90 | // Used in window.GetColorDUI() 91 | ColorTypeDUI = { 92 | text: 0, 93 | background: 1, 94 | highlight: 2, 95 | selection: 3 96 | }; 97 | // Used in window.GetFontDUI() 98 | FontTypeDUI = { 99 | defaults: 0, 100 | tabs: 1, 101 | lists: 2, 102 | playlists: 3, 103 | statusbar: 4, 104 | console: 5 105 | }; 106 | // Used in utils.GetAlbumArt() 107 | var AlbumArtId = { 108 | front: 0, 109 | back: 1, 110 | disc: 2, 111 | icon: 3, 112 | artist: 4, 113 | 114 | GetName: function(value) { 115 | for (var i in this) { 116 | if (this[i] == value) return i; 117 | } 118 | return null; 119 | } 120 | }; 121 | //colour blending 122 | function getAlpha(color) { 123 | return ((color >> 24) & 0xff); 124 | }; 125 | 126 | function getRed(color) { 127 | return ((color >> 16) & 0xff); 128 | }; 129 | 130 | function getGreen(color) { 131 | return ((color >> 8) & 0xff); 132 | }; 133 | 134 | function getBlue(color) { 135 | return (color & 0xff); 136 | }; 137 | 138 | function toRGB(d){ // convert back to RGB values 139 | var d = d - 0xff000000; 140 | var r = d >> 16; 141 | var g = d >> 8 & 0xFF; 142 | var b = d & 0xFF; 143 | return [r,g,b]; 144 | }; 145 | 146 | function blendColors(c1, c2, factor) { 147 | // When factor is 0, result is 100% color1, when factor is 1, result is 100% color2. 148 | var c1 = toRGB(c1); 149 | var c2 = toRGB(c2); 150 | var r = Math.round(c1[0] + factor * (c2[0] - c1[0])); 151 | var g = Math.round(c1[1] + factor * (c2[1] - c1[1])); 152 | var b = Math.round(c1[2] + factor * (c2[2] - c1[2])); 153 | return (0xff000000 | (r << 16) | (g << 8) | (b)); 154 | }; 155 | 156 | function isDarkMode(background) { 157 | r = getRed(background); 158 | g = getGreen(background); 159 | b = getBlue(background); 160 | if ((r + g + b) < 383) return true; 161 | else return false; 162 | } 163 | 164 | function z(value) { 165 | return Math.round(value * zdpi); 166 | }; 167 | 168 | // {{ 169 | // Used in gr.DrawString() 170 | function StringFormat() { 171 | var h_align = 0, 172 | v_align = 0, 173 | trimming = 0, 174 | flags = 0; 175 | switch (arguments.length) { 176 | case 3: 177 | trimming = arguments[2]; 178 | case 2: 179 | v_align = arguments[1]; 180 | case 1: 181 | h_align = arguments[0]; 182 | break; 183 | default: 184 | return 0; 185 | }; 186 | return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags); 187 | }; 188 | StringAlignment = { 189 | Near: 0, 190 | Centre: 1, 191 | Far: 2 192 | }; 193 | var lc_stringformat = StringFormat(StringAlignment.Near, StringAlignment.Centre); 194 | var cc_stringformat = StringFormat(StringAlignment.Centre, StringAlignment.Centre); 195 | //}} 196 | 197 | var lc_txt = DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS; 198 | var rc_txt = DT_RIGHT | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS; 199 | var rb_txt = DT_RIGHT | DT_BOTTOM | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS; 200 | var lt_txt = DT_LEFT | DT_TOP | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS; 201 | var cc_txt = DT_CENTER | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS; 202 | var ccf_txt = DT_CENTER | DT_NOPREFIX | DT_CALCRECT | DT_VCENTER; 203 | var lcs_txt = DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_SINGLELINE | DT_END_ELLIPSIS; 204 | var rcs_txt = DT_RIGHT | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_SINGLELINE | DT_END_ELLIPSIS; -------------------------------------------------------------------------------- /script/js_common/guiext.js: -------------------------------------------------------------------------------- 1 | TOOLTIP_TEXT_PADDING_LEFT = 6; 2 | TOOLTIP_TEXT_PADDING_TOP = 2; 3 | TOOLTIP_TEXT_PADDING_RIGHT = 6; 4 | TOOLTIP_TEXT_PADDING_BOTTOM = 2; 5 | 6 | function UISlider(ImgBg, ImgOverlay, ImgKnob, ImgDiv) { 7 | this.State = 0; //0-normal 1-mouse hover 2-mouse down 8 | this.Value = 0; 9 | this.MinValue = 0; 10 | this.MaxValue = 100; 11 | 12 | this.setSize = function (x, y, w, h){ 13 | this.X = x; 14 | this.Y = y; 15 | this.sub_w = Math.round((w - 9)/10); 16 | this.Width = w; 17 | this.Height = h; 18 | } 19 | 20 | this.ChangeValue = function(value) { 21 | this.Value = value; 22 | this.Repaint(); 23 | } 24 | 25 | this.Paint = function(gr) { 26 | var pos = this.Value / (this.MaxValue - this.MinValue); 27 | if (pos > 1) pos = 1; 28 | pos = (pos * this.Width) | 0; 29 | if(ImgDiv) { 30 | var xf = true; 31 | for (var i = 1; i < 11; i++) { 32 | var _x = this.X + (this.sub_w + 1) * (i-1); 33 | DrawThemedBox(gr, _x, this.Y, this.sub_w, this.Height, ImgBg); 34 | var w_sum = i * this.sub_w + i - 1; 35 | if(w_sum < pos) { 36 | DrawThemedBox(gr, _x, this.Y, this.sub_w, this.Height, ImgOverlay); 37 | } else if(xf) { 38 | DrawThemedBox(gr, _x, this.Y, this.sub_w - (w_sum - pos), this.Height, ImgOverlay); 39 | xf = false; 40 | } 41 | } 42 | } else { 43 | DrawThemedBox(gr, this.X, this.Y, this.Width, this.Height, ImgBg); 44 | DrawThemedBox(gr, this.X, this.Y, pos, this.Height, ImgOverlay); 45 | } 46 | gr.DrawImage(ImgKnob, Math.floor(this.X + pos - (ImgKnob.Width / 2)), this.Y, ImgKnob.Width, ImgKnob.Height, 0, 0, ImgKnob.Width, ImgKnob.Height); 47 | } 48 | 49 | this.MouseDown = function(_x, _y) { 50 | if (this.State == 1) { 51 | this.State = 2; 52 | if (_x > this.X && _x < this.X + this.Width) { 53 | var pos = _x - this.X; 54 | this.Value = (pos * (this.MaxValue - this.MinValue) / this.Width) | 0; 55 | this.Repaint(); 56 | } 57 | return true; 58 | } else return false; 59 | } 60 | 61 | this.MouseMove = function(_x, _y) { 62 | var _value; 63 | if (this.State == 2) { 64 | if (_x <= this.X) _value = this.MinValue; 65 | else { 66 | if (_x >= this.X + this.Width) _value = this.MaxValue; 67 | else { 68 | var pos = _x - this.X; 69 | _value = (pos * (this.MaxValue - this.MinValue) / this.Width) | 0; 70 | } 71 | } 72 | this.Value = _value; 73 | this.Repaint(); 74 | return true; 75 | } else { 76 | if (_x > this.X - ImgKnob.Width / 2 && _x < this.X + this.Width + ImgKnob.Width / 2 && _y > this.Y && _y < this.Y + this.Height) { 77 | this.State = 1; 78 | return true; 79 | } else this.State = 0; 80 | } 81 | return false; 82 | } 83 | 84 | this.MouseUp = function() { 85 | if (this.State == 2) { 86 | this.State = 0; 87 | return true; 88 | } 89 | } 90 | 91 | this.MouseWheel = function(step, valueStep) { 92 | if (this.State == 1) { 93 | var newValue = this.Value + (step * valueStep); 94 | if (newValue < this.MinValue) newValue = this.MinValue; 95 | if (newValue > this.MaxValue) newValue = this.MaxValue; 96 | this.ChangeValue(newValue); 97 | return true; 98 | } 99 | return false; 100 | } 101 | 102 | this.MouseLeave = function() { 103 | this.State = 0; 104 | } 105 | 106 | this.Repaint = function() { 107 | window.RepaintRect(this.X - ImgKnob.Width, this.Y, this.Width + 2 * ImgKnob.Width, this.Height) 108 | } 109 | } 110 | ////////////////////// 111 | 112 | function DrawThemedBox(gr, x, y, w, h, ImageObj) { 113 | gr.DrawImage(ImageObj, x, y, w, h, 0, 0, ImageObj.Width-2, ImageObj.Height); 114 | } 115 | 116 | function UITooltip(x, y, txt, FontObj, color, TipBG) { 117 | this.Visible = false; 118 | this.X = x; 119 | this.Y = y; 120 | this.Width = 0; 121 | this.Height = 0 122 | this.Text = txt; 123 | if(TipBG) var BgImageObj = TipBG; 124 | 125 | this.Paint = function(gr) { 126 | this.Width = gr.CalcTextWidth(this.Text, FontObj) + TOOLTIP_TEXT_PADDING_LEFT + TOOLTIP_TEXT_PADDING_RIGHT; 127 | this.Height = gr.CalcTextHeight(this.Text, FontObj) + TOOLTIP_TEXT_PADDING_TOP + TOOLTIP_TEXT_PADDING_BOTTOM; 128 | if (this.Visible) { 129 | if(TipBG) DrawThemedBox(gr, this.X, this.Y, this.Width, this.Height, BgImageObj); 130 | gr.GdiDrawText(this.Text, FontObj, color, this.X + TOOLTIP_TEXT_PADDING_LEFT, this.Y + TOOLTIP_TEXT_PADDING_TOP, gr.CalcTextWidth(this.Text, FontObj), FontObj.Height, DT_NOPREFIX); 131 | } 132 | } 133 | 134 | this.Repaint = function() { 135 | window.RepaintRect(this.X, this.Y, this.Width, this.Height); 136 | } 137 | 138 | this.Activate = function() { 139 | this.Visible = true; 140 | this.Repaint(); 141 | } 142 | 143 | this.Deactivate = function() { 144 | this.Visible = false; 145 | this.Repaint(); 146 | } 147 | } 148 | 149 | function UITextView(txt, FontObj, color, formatStr) { 150 | this.X = 0; 151 | this.Y = 0; 152 | this.Width = 0; 153 | this.Height = 0; 154 | this.Text = txt; 155 | 156 | this.SetSize = function(x, y, w, h) { 157 | this.X = x; 158 | this.Y = y; 159 | this.Width = w; 160 | this.Height = h; 161 | } 162 | 163 | this.ChangeText = function(txt) { 164 | this.Text = txt; 165 | window.RepaintRect(this.X, this.Y, this.Width, this.Height); 166 | } 167 | 168 | this.Repaint = function() { 169 | window.RepaintRect(this.X, this.Y, this.Width, this.Height); 170 | } 171 | 172 | this.NewTrack = function() { 173 | this.ChangeText(TF(this.Text)); 174 | } 175 | 176 | 177 | 178 | this.Paint = function(gr) { 179 | gr.GdiDrawText(this.Text, FontObj, color, this.X, this.Y, this.Width, this.Height, formatStr); 180 | } 181 | } 182 | 183 | //DEFINE CLASS ButtonUI 184 | function ButtonUI(img) { 185 | this.x = null; 186 | this.y = null; 187 | this.img = img; 188 | this.width = img.Width; 189 | this.height = img.Height/3; 190 | this.state = 0; //0-normal ;1-hover ;2-down ;3-disable 191 | } 192 | 193 | ButtonUI.prototype.SetXY = function(x, y){ 194 | this.x = x; 195 | this.y = y; 196 | } 197 | 198 | ButtonUI.prototype.Paint = function(gr) { 199 | gr.DrawImage(this.img, this.x, this.y, this.width, this.height, 0, 0, this.width, this.height, 0); 200 | if(this.state > 0) gr.DrawImage(this.img, this.x, this.y, this.width, this.height, 0, this.state * this.height, this.width, this.height, 0); 201 | } 202 | 203 | ButtonUI.prototype.Repaint = function() { 204 | window.RepaintRect(this.x, this.y, this.width, this.height); 205 | } 206 | 207 | ButtonUI.prototype.MouseMove = function(x, y) { 208 | if (x > this.x && x < this.x + this.width && y > this.y && y < this.y + this.height) { 209 | if (this.state == 0) { 210 | this.state = 1; 211 | this.Repaint(); 212 | } 213 | return true; 214 | } else { 215 | this.Reset(); 216 | return false; 217 | } 218 | } 219 | 220 | ButtonUI.prototype.MouseDown = function(x, y) { 221 | if (this.state == 1) { 222 | this.state = 2; 223 | this.Repaint(); 224 | return true; 225 | } else return false; 226 | } 227 | 228 | ButtonUI.prototype.MouseUp = function() { 229 | if (this.state == 2) { 230 | this.state = 1; 231 | this.Repaint(); 232 | return true; 233 | } else return false; 234 | } 235 | 236 | ButtonUI.prototype.Reset = function() { 237 | if (this.state != 0) { 238 | this.state = 0; 239 | this.Repaint(); 240 | } 241 | } -------------------------------------------------------------------------------- /script/js_common/splitterESLProp.js: -------------------------------------------------------------------------------- 1 | window.DefinePanel('Jsplitter R02'); 2 | window.DlgCode = 0x0004; 3 | let ww = 0; 4 | let wh = 0; 5 | var INFO, ESL, active_p; 6 | var timer_swp = false; 7 | var autosw = window.GetProperty("Auto.Switch", true); 8 | 9 | function get_panel() { 10 | INFO = window.GetPanel('TrackProp'); 11 | ESL = window.GetPanel('ESLyric'); 12 | if(!autosw){ 13 | if(ESL.Hidden) active_p = INFO; 14 | else active_p = ESL; 15 | } 16 | else{ 17 | if(!fb.IsPlaying) { 18 | active_p = INFO; 19 | if(INFO.Hidden) INFO.Show(true); 20 | if(!ESL.Hidden) ESL.Show(false); 21 | } 22 | else { 23 | active_p = ESL; 24 | if(ESL.Hidden) ESL.Show(true); 25 | if(!INFO.Hidden) INFO.Show(false); 26 | } 27 | } 28 | INFO.ShowCaption = ESL.ShowCaption = false; 29 | } 30 | 31 | function set_panel() { 32 | try{ 33 | if(active_p.Width != ww || active_p.Height != wh) 34 | active_p.Move(0, 0, ww, wh); 35 | } catch(e){//快速设置布局的bug 36 | get_panel(); 37 | } 38 | } 39 | 40 | function swith_panel(pno) { 41 | active_p.Show(false); 42 | if(pno == 2) active_p = ESL; 43 | else active_p = INFO; 44 | active_p.Show(true); 45 | set_panel(); 46 | } 47 | 48 | ////////////// 49 | get_panel(); 50 | 51 | function on_size() { 52 | ww = window.Width; 53 | wh = window.Height; 54 | if(ww) set_panel(); 55 | } 56 | 57 | function on_playback_new_track(info) { 58 | if(!autosw) return; 59 | timer_swp && window.ClearTimeout(timer_swp); 60 | timer_swp = false; 61 | swith_panel(2); 62 | } 63 | 64 | function on_playback_stop(reason) { 65 | if(!autosw) return; 66 | timer_swp = window.SetTimeout(function() { 67 | swith_panel(1); 68 | timer_swp && window.ClearTimeout(timer_swp); 69 | timer_swp = false; 70 | }, 150); 71 | } 72 | 73 | function on_notify_data(name, info) { 74 | switch (name) { 75 | case "SwitchESLProp": 76 | if(INFO.Hidden) swith_panel(1); 77 | else swith_panel(2); 78 | break; 79 | case "AutoESLProp": 80 | autosw = info; 81 | window.SetProperty("Auto.Switch", autosw); 82 | break; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /script/js_common/splitterh.js: -------------------------------------------------------------------------------- 1 | include(fb.ProfilePath + 'foobox\\script\\js_common\\common.js'); 2 | window.DlgCode = DLGC_WANTALLKEYS; 3 | let ww = 0, wh = 0; 4 | let m_x = 0, m_y = 0; 5 | let sp_drag = false; 6 | var leftratio = 0; 7 | PLeft.ShowCaption = PRight.ShowCaption = false; 8 | 9 | function get_colors() { 10 | g_color_background_default = window.GetColourDUI(ColorTypeDUI.background); 11 | g_color_background = g_color_background_default; 12 | dark_mode = isDarkMode(g_color_background); 13 | if(dark_mode){ 14 | c_line = RGBA(0,0,0,100); 15 | g_color_topbar = RGBA(0,0,0,30); 16 | }else{ 17 | c_line = RGBA(0,0,0,75); 18 | g_color_topbar = RGBA(0,0,0,15); 19 | } 20 | } 21 | 22 | function get_font() { 23 | let g_font = window.GetFontDUI(FontTypeDUI.playlists); 24 | zdpi = g_font.Size / 12; 25 | g_topbarheight = z(26) + 2; 26 | }; 27 | 28 | ////////////// 29 | get_colors(); 30 | get_font(); 31 | 32 | function on_size() { 33 | ww = window.Width; 34 | wh = window.Height; 35 | if(leftratio && ww) { 36 | var lw_calc = Math.round((ww-2)*leftratio); 37 | PLeft.Move(0, 0, lw_calc, wh); 38 | PRight.Move(lw_calc + 2, 0, ww - lw_calc - 2, wh); 39 | } else{ 40 | PLeft.Move(0, 0, PLeft.Width, wh); 41 | PRight.Move(PLeft.Width + 2, 0, ww - PLeft.Width - 2, wh); 42 | } 43 | if(ww) leftratio = PLeft.Width/(ww-2); 44 | } 45 | 46 | function on_paint(gr) { 47 | if (!ww || !wh) return; 48 | gr.FillSolidRect(0, 0, ww, wh, g_color_background); 49 | if(hasTopbar){ 50 | gr.FillSolidRect(0, 0, ww, g_topbarheight - 2, g_color_topbar); 51 | gr.DrawLine(0, g_topbarheight, ww, g_topbarheight, 1, RGBA(0, 0, 0, 45)); 52 | } 53 | gr.DrawLine(PLeft.Width + 1, 0, PLeft.Width + 1, wh, 1, c_line); 54 | } 55 | 56 | function on_mouse_move(x, y) { 57 | if(m_x == x && m_y == y) return; 58 | if(x > 0 && y > 0 && x < ww && y < wh) { 59 | window.SetCursor(32644);//IDC_SIZE 60 | if(sp_drag){ 61 | PLeft.Move(0, 0, x, wh); 62 | PRight.Move(x + 2, 0, ww - x - 2, wh); 63 | window.Repaint(); 64 | leftratio = PLeft.Width/(ww -2); 65 | } 66 | } 67 | m_x = x; 68 | m_y = y; 69 | } 70 | 71 | function on_mouse_lbtn_down(x, y) { 72 | if(x > PLeft.Width - 1 && y > 0 && x < PLeft.Width + 3 && y < wh) sp_drag = true; 73 | } 74 | 75 | function on_mouse_lbtn_up(x, y) { 76 | sp_drag = false; 77 | } 78 | 79 | function on_mouse_rbtn_up() { 80 | return true; 81 | } 82 | 83 | function on_colours_changed() { 84 | get_colors(); 85 | window.Repaint(); 86 | } 87 | 88 | function on_font_changed() { 89 | get_font(); 90 | window.Repaint(); 91 | } 92 | 93 | function on_notify_data(name, info) { 94 | switch (name) { 95 | case "color_scheme_updated": 96 | if(!info) { 97 | g_color_background = g_color_background_default; 98 | window.Repaint(); 99 | }else if(info.length > 3){ 100 | g_color_background = RGB(info[3], info[4], info[5]); 101 | window.Repaint(); 102 | } 103 | break; 104 | } 105 | } -------------------------------------------------------------------------------- /script/js_common/splitterv.js: -------------------------------------------------------------------------------- 1 | include(fb.ProfilePath + 'foobox\\script\\js_common\\common.js'); 2 | window.DlgCode = DLGC_WANTALLKEYS; 3 | let ww = 0, wh = 0; 4 | let m_x = 0, m_y = 0; 5 | let sp_drag = false; 6 | var upperratio = 0; 7 | PUpper.ShowCaption = PLower.ShowCaption = false; 8 | 9 | function get_colors() { 10 | g_color_background_default = window.GetColourDUI(ColorTypeDUI.background); 11 | g_color_background = g_color_background_default; 12 | } 13 | 14 | ////////////// 15 | get_colors(); 16 | 17 | function on_size() { 18 | ww = window.Width; 19 | wh = window.Height; 20 | if(upperratio && wh) { 21 | var uh_calc = Math.round((wh-2)*upperratio); 22 | PUpper.Move(0, 0, ww, uh_calc); 23 | PLower.Move(0, uh_calc + 2, ww, wh - uh_calc - 2); 24 | } else{ 25 | PUpper.Move(0, 0, ww, PUpper.Height); 26 | PLower.Move(0, PUpper.Height + 2, ww, wh - PUpper.Height - 2); 27 | } 28 | if(wh) upperratio = PUpper.Height/(wh-2); 29 | } 30 | 31 | function on_paint(gr) { 32 | if (!ww || !wh) return; 33 | gr.FillSolidRect(0, 0, ww, wh, g_color_background); 34 | gr.FillSolidRect(0, PUpper.Height, ww, 1, RGBA(0, 0, 0, 80)); 35 | gr.FillSolidRect(0, PUpper.Height+1, ww, 1, RGBA(0, 0, 0, 160)); 36 | } 37 | 38 | function on_mouse_move(x, y) { 39 | if(m_x == x && m_y == y) return; 40 | if(x > 0 && y > 0 && x < ww && y < wh) { 41 | window.SetCursor(32645);//IDC_SIZE 42 | if(sp_drag){ 43 | PUpper.Move(0, 0, ww, y); 44 | PLower.Move(0, y + 2, ww, wh - y - 2); 45 | window.Repaint(); 46 | upperratio = PUpper.Height/(wh-2); 47 | } 48 | } 49 | m_x = x; 50 | m_y = y; 51 | } 52 | 53 | function on_mouse_lbtn_down(x, y) { 54 | if(y > PUpper.Height - 1 && x > 0 && y < PUpper.Height + 3 && x < ww) sp_drag = true; 55 | } 56 | 57 | function on_mouse_lbtn_up(x, y) { 58 | sp_drag = false; 59 | } 60 | 61 | function on_mouse_rbtn_up() { 62 | return true; 63 | } 64 | 65 | function on_colours_changed() { 66 | get_colors(); 67 | window.Repaint(); 68 | } 69 | 70 | function on_notify_data(name, info) { 71 | switch (name) { 72 | case "color_scheme_updated": 73 | if(!info) { 74 | g_color_background = g_color_background_default; 75 | window.Repaint(); 76 | }else if(info.length > 3){ 77 | g_color_background = RGB(info[3], info[4], info[5]); 78 | window.Repaint(); 79 | } 80 | break; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /script/js_common/splitterve.js: -------------------------------------------------------------------------------- 1 | window.DefinePanel('Jsplitter V01'); 2 | include(fb.ProfilePath + 'foobox\\script\\js_common\\common.js'); 3 | var PUpper = window.GetPanel('infoart'); 4 | var PLower = window.GetPanel('ESLProp'); 5 | window.DlgCode = DLGC_WANTALLKEYS; 6 | let ww = 0, wh = 0; 7 | let m_x = 0, m_y = 0; 8 | let sp_drag = false; 9 | var upperratio = 0; 10 | var divcolor; 11 | var draw_splitter = window.GetProperty("Splitter.on", true); 12 | var splitter_hover = false; 13 | PUpper.ShowCaption = PLower.ShowCaption = false; 14 | var c_default_hl = 0, g_color_highlight = 0; 15 | 16 | function get_colors() { 17 | g_color_background_default = window.GetColourDUI(ColorTypeDUI.background); 18 | g_color_background = g_color_background_default; 19 | dark_mode = isDarkMode(g_color_background); 20 | if(dark_mode){ 21 | divcolor = RGBA(0, 0, 0, 120); 22 | }else{ 23 | divcolor = RGBA(0, 0, 0, 75); 24 | } 25 | c_default_hl = window.GetColourDUI(ColorTypeDUI.highlight); 26 | g_color_highlight = c_default_hl; 27 | } 28 | 29 | ////////////// 30 | get_colors(); 31 | 32 | function on_size() { 33 | ww = window.Width; 34 | wh = window.Height; 35 | if(upperratio && wh) { 36 | var uh_calc = Math.round((wh-2)*upperratio); 37 | PUpper.Move(0, 0, ww, uh_calc); 38 | PLower.Move(0, uh_calc + 2, ww, wh - uh_calc - 2); 39 | } else{ 40 | PUpper.Move(0, 0, ww, PUpper.Height); 41 | PLower.Move(0, PUpper.Height + 2, ww, wh - PUpper.Height - 2); 42 | } 43 | if(wh) upperratio = PUpper.Height/(wh-2); 44 | } 45 | 46 | function on_paint(gr) { 47 | if (!ww || !wh) return; 48 | gr.FillSolidRect(0, 0, ww, wh, g_color_background); 49 | if(draw_splitter){ 50 | gr.FillGradRect(0, PUpper.Height, ww, 1, 0, g_color_background, /*linecolor*/divcolor, 0.5); 51 | } else if(splitter_hover) gr.DrawLine(0, PUpper.Height, ww, PUpper.Height, 1, divcolor); 52 | 53 | } 54 | 55 | function on_mouse_move(x, y) { 56 | if(m_x == x && m_y == y) return; 57 | var splitter_tmp = splitter_hover; 58 | if(x > 0 && y > 0 && x < ww && y < wh) { 59 | window.SetCursor(32645);//IDC_SIZE 60 | if(sp_drag){ 61 | PUpper.Move(0, 0, ww, y); 62 | PLower.Move(0, y + 2, ww, wh - y - 2); 63 | window.Repaint(); 64 | upperratio = PUpper.Height/(wh-2); 65 | } 66 | splitter_hover = true; 67 | } else splitter_hover = false; 68 | if(!draw_splitter && (splitter_tmp != splitter_hover)) window.RepaintRect(0, PUpper.Height - 1, ww, 3); 69 | m_x = x; 70 | m_y = y; 71 | } 72 | 73 | function on_mouse_lbtn_down(x, y) { 74 | if(y > PUpper.Height - 1 && x > 0 && y < PUpper.Height + 3 && x < ww) sp_drag = true; 75 | } 76 | 77 | function on_mouse_lbtn_up(x, y) { 78 | sp_drag = false; 79 | } 80 | 81 | function on_mouse_rbtn_up() { 82 | return true; 83 | } 84 | 85 | function on_mouse_leave(){ 86 | splitter_hover = false; 87 | if(!draw_splitter) window.RepaintRect(0, PUpper.Height - 1, ww, 3); 88 | } 89 | 90 | function on_colours_changed() { 91 | get_colors(); 92 | window.Repaint(); 93 | } 94 | 95 | function on_notify_data(name, info) { 96 | switch (name) { 97 | case "MetadataInfo": 98 | draw_splitter = info; 99 | window.SetProperty("Splitter.on", draw_splitter); 100 | window.Repaint(); 101 | break; 102 | case "color_scheme_updated": 103 | if(!info) { 104 | g_color_background = g_color_background_default; 105 | window.Repaint(); 106 | }else if(info.length > 3){ 107 | g_color_background = RGB(info[3], info[4], info[5]); 108 | window.Repaint(); 109 | } 110 | break; 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /script/js_common/uihacks.js: -------------------------------------------------------------------------------- 1 | var UIHacks; 2 | var uiHacks = utils.CheckComponent("foo_ui_hacks"); 3 | if (uiHacks) UIHacks = new ActiveXObject("UIHacks"); 4 | var pseudoCaption; 5 | var pseudoCaptionWidth; 6 | var mouseInControl = false; 7 | 8 | function uiHacksInit() { 9 | if (!uiHacks) return; 10 | UIHacks.FrameStyle = 3;//noboarder 11 | UIHacks.MainMenuState = 1;//hide 12 | UIHacks.StatusBarState = 0;//hide 13 | UIHacks.MoveStyle = 0;//caption only 14 | UIHacks.Aero.Effect = 2;//GlassFrame 15 | UIHacks.Aero.Bottom = 1; 16 | UIHacks.Aero.Left = UIHacks.Aero.Right = UIHacks.Aero.Top = 0; 17 | if(UIHacks.MainWindowState == 2) UIHacks.DisableSizing = true; //maximized 18 | else UIHacks.DisableSizing = false; 19 | } 20 | 21 | function uiHacksResetCaption(){ 22 | if (!uiHacks) return; 23 | UIHacks.SetPseudoCaption(menubtnw, 0, ww - 3*topbtnw - menubtnw, topbarh); 24 | if(UIHacks.MainWindowState == 2) UIHacks.DisableSizing = true; //maximized 25 | else UIHacks.DisableSizing = false; 26 | } -------------------------------------------------------------------------------- /switchgit.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem switch to 1=github 2=gitee 3 | set a=0 4 | set b=0 5 | set c=0 6 | if exist .github set /a a=1 7 | if exist .gitee set /a b=2 8 | set /a c=%a%+%b% 9 | if %c%==1 ( 10 | rename .git .gitee 11 | rename .github .git 12 | ) else ( 13 | if %c%==2 ( 14 | rename .git .github 15 | rename .gitee .git 16 | ) 17 | ) --------------------------------------------------------------------------------