├── Benchmark ├── CP-ABE │ └── Test-CP-ABE.py ├── README.md └── Symmetry │ ├── Test-SymmetricCrypto.py │ └── file-gen.py ├── Environment ├── README.md ├── charm-dev.zip ├── gmp-6.1.2.tar.bz2 ├── openssl-1.0.2s.tar.gz └── pbc-0.5.14.tar.gz ├── LICENSE ├── README.md ├── decrypt.py └── html ├── assets ├── css │ ├── ace-ie.min.css │ ├── ace-part2.min.css │ ├── ace-rtl.min.css │ ├── ace-skins.min.css │ ├── ace.min.css │ ├── bootstrap-colorpicker.min.css │ ├── bootstrap-datepicker3.min.css │ ├── bootstrap-datetimepicker.min.css │ ├── bootstrap-duallistbox.min.css │ ├── bootstrap-editable.min.css │ ├── bootstrap-multiselect.min.css │ ├── bootstrap-timepicker.min.css │ ├── bootstrap.min.css │ ├── chosen.min.css │ ├── colorbox.min.css │ ├── daterangepicker.min.css │ ├── dropzone.min.css │ ├── font-awesome.min.css │ ├── fonts.googleapis.com.css │ ├── fullcalendar.min.css │ ├── jquery-ui.custom.min.css │ ├── jquery-ui.min.css │ ├── jquery.gritter.min.css │ ├── prettify.min.css │ ├── select2.min.css │ ├── ui.jqgrid.min.css │ └── upload.css ├── font-awesome │ └── 4.5.0 │ │ ├── css │ │ └── font-awesome.min.css │ │ └── fonts │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── images │ ├── avatars │ │ ├── avatar.png │ │ ├── avatar1.png │ │ ├── avatar2.png │ │ ├── avatar3.png │ │ ├── avatar4.png │ │ ├── avatar5.png │ │ ├── profile-pic.jpg │ │ └── user.jpg │ ├── bootstrap-colorpicker │ │ ├── alpha-horizontal.png │ │ ├── alpha.png │ │ ├── hue-horizontal.png │ │ ├── hue.png │ │ └── saturation.png │ ├── email │ │ ├── email1.png │ │ ├── email2.png │ │ ├── email3.png │ │ └── email4.png │ ├── gallery │ │ ├── image-1.jpg │ │ ├── image-2.jpg │ │ ├── image-3.jpg │ │ ├── image-4.jpg │ │ ├── image-5.jpg │ │ ├── image-6.jpg │ │ ├── thumb-1.jpg │ │ ├── thumb-2.jpg │ │ ├── thumb-3.jpg │ │ ├── thumb-4.jpg │ │ ├── thumb-5.jpg │ │ └── thumb-6.jpg │ └── placeholder │ │ ├── 165x90.png │ │ ├── 255x150.png │ │ ├── 530x270.png │ │ └── 550x280.png ├── js │ ├── ace-editable.min.js │ ├── ace-elements.min.js │ ├── ace-extra.min.js │ ├── ace.min.js │ ├── autosize.min.js │ ├── bootbox.js │ ├── bootstrap-colorpicker.min.js │ ├── bootstrap-datepicker.min.js │ ├── bootstrap-datetimepicker.min.js │ ├── bootstrap-editable.min.js │ ├── bootstrap-markdown.min.js │ ├── bootstrap-multiselect.min.js │ ├── bootstrap-tag.min.js │ ├── bootstrap-timepicker.min.js │ ├── bootstrap-wysiwyg.min.js │ ├── bootstrap.min.js │ ├── buttons.colVis.min.js │ ├── buttons.flash.min.js │ ├── buttons.html5.min.js │ ├── buttons.print.min.js │ ├── chosen.jquery.min.js │ ├── dataTables.buttons.min.js │ ├── dataTables.select.min.js │ ├── daterangepicker.min.js │ ├── dropzone.min.js │ ├── excanvas.min.js │ ├── fullcalendar.min.js │ ├── grid.locale-en.js │ ├── holder.min.js │ ├── html5shiv.min.js │ ├── jquery-1.11.3.min.js │ ├── jquery-2.1.4.min.js │ ├── jquery-additional-methods.min.js │ ├── jquery-typeahead.js │ ├── jquery-ui.custom.min.js │ ├── jquery-ui.min.js │ ├── jquery.bootstrap-duallistbox.min.js │ ├── jquery.colorbox.min.js │ ├── jquery.dataTables.bootstrap.min.js │ ├── jquery.dataTables.min.js │ ├── jquery.easypiechart.min.js │ ├── jquery.flot.min.js │ ├── jquery.flot.pie.min.js │ ├── jquery.flot.resize.min.js │ ├── jquery.gritter.min.js │ ├── jquery.hotkeys.index.min.js │ ├── jquery.inputlimiter.min.js │ ├── jquery.jqGrid.min.js │ ├── jquery.knob.min.js │ ├── jquery.maskedinput.min.js │ ├── jquery.mobile.custom.min.js │ ├── jquery.nestable.min.js │ ├── jquery.raty.min.js │ ├── jquery.sparkline.index.min.js │ ├── jquery.ui.touch-punch.min.js │ ├── jquery.validate.min.js │ ├── markdown.min.js │ ├── moment.min.js │ ├── prettify.min.js │ ├── respond.min.js │ ├── select2.min.js │ ├── spin.js │ ├── spinbox.min.js │ ├── tree.min.js │ └── wizard.min.js └── swf │ └── flashExport.swf ├── attr.php ├── cipher ├── download.php ├── encrypt.py ├── favicon.ico ├── img ├── ftype │ ├── ai.png │ ├── attachment.png │ ├── audio.png │ ├── box_notes.png │ ├── csv.png │ ├── eps.png │ ├── excel.png │ ├── exe.png │ ├── flash.png │ ├── folder.png │ ├── gdoc.png │ ├── gform.png │ ├── gpres.png │ ├── gsheet.png │ ├── html.png │ ├── image.png │ ├── keynote.png │ ├── link.png │ ├── mp4.png │ ├── pack.png │ ├── pages.png │ ├── pdf.png │ ├── ppt.png │ ├── psd.png │ ├── quip_doc.png │ ├── quip_sheet.png │ ├── rtf.png │ ├── slide.png │ ├── stypi.png │ ├── txt.png │ ├── unknown.png │ ├── video.png │ ├── visio.png │ ├── webex.png │ ├── word.png │ ├── xml.png │ └── zip.png ├── mp4.png ├── portrait │ ├── 1.jpg │ ├── 10.jpg │ ├── 11.jpg │ ├── 12.jpg │ ├── 13.jpg │ ├── 14.jpg │ ├── 15.jpg │ ├── 16.jpg │ ├── 17.jpg │ ├── 18.jpg │ ├── 19.jpg │ ├── 2.jpg │ ├── 20.jpg │ ├── 21.jpg │ ├── 22.jpg │ ├── 23.jpg │ ├── 24.jpg │ ├── 25.jpg │ ├── 26.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ ├── 6.jpg │ ├── 7.jpg │ ├── 8.jpg │ └── 9.jpg └── txt.png ├── index.html ├── login.html ├── login.php ├── logs.log ├── logs └── logs.log ├── msk.json ├── pk.json ├── python_api ├── login.py └── register.py ├── register.php ├── set.php ├── show.php ├── sk.json ├── sk.py ├── test.py ├── tmp_key_attr └── key_attr.txt ├── uid.txt └── upload.php /Benchmark/CP-ABE/Test-CP-ABE.py: -------------------------------------------------------------------------------- 1 | from charm.toolbox.pairinggroup import PairingGroup, GT 2 | from charm.schemes.abenc.abenc_bsw07 import CPabe_BSW07 3 | from time import * 4 | from numpy import * 5 | 6 | def Print_Time(T_encrypt: list, T_decrypt1: list, T_decrypt2:list): 7 | print('Time of Encryption:') 8 | for _ in range(len(T_encrypt)): 9 | print(T_encrypt[_], end = ' ') 10 | print('') 11 | print('Average time used: ', sum(T_encrypt) / len(T_encrypt), '\n') 12 | 13 | print('Time of Decryption#1:') 14 | for _ in range(len(T_decrypt1)): 15 | print(T_decrypt1[_], end = ' ') 16 | print('') 17 | print('Average time used: ', sum(T_decrypt1) / len(T_decrypt1), '\n') 18 | 19 | print('Time of Decryption#2:') 20 | for _ in range(len(T_decrypt2)): 21 | print(T_decrypt2[_], end = ' ') 22 | print('') 23 | print('Average time used: ', sum(T_decrypt2) / len(T_decrypt2), '\n') 24 | 25 | def Round(ATTS: list, Policy: str): 26 | # instantiate a bilinear pairing map 27 | pairing_group = PairingGroup('SS512') 28 | 29 | # CP-ABE under DLIN (2-linear) 30 | cpabe = CPabe_BSW07(pairing_group) 31 | 32 | # run the set up 33 | (pk, msk) = cpabe.setup() 34 | 35 | # generate a secret_key 36 | attributes = ATTS 37 | secret_key = cpabe.keygen(pk, msk, attributes) 38 | 39 | times_enc = [] # DO encrypting time 40 | times_dec = [] # DO decrypting time 41 | Rounds = 30 42 | policy_str = Policy 43 | 44 | for _ in range(Rounds): 45 | # choose a random message pretend to be owner's record 46 | msg = pairing_group.random(GT) 47 | 48 | # generate a ciphertext 49 | start_time = time() 50 | ctxt = cpabe.encrypt(pk, msg, policy_str) 51 | end_time = time() 52 | times_enc.append(end_time - start_time) 53 | 54 | # decryption as Owner 55 | start_time = time() 56 | rec_msg = cpabe.decrypt(pk, secret_key, ctxt) 57 | end_time = time() 58 | times_dec.append(end_time - start_time) 59 | if rec_msg == msg: 60 | print ("Successful decryption as Owner.") 61 | # pass 62 | else: 63 | print ("Decryption as a Owner failed.") 64 | 65 | 66 | # Print_Time(times_enc, times_dec, times_p1) 67 | # print(policy_str) 68 | time_enc = mean(times_enc) 69 | time_dec = mean(times_dec) 70 | 71 | return (time_enc, time_dec, times_enc, times_dec) 72 | 73 | def main(): 74 | Times_enc = [] 75 | Times_dec = [] 76 | for i in range(5, 105, 5): 77 | temp = range(i) 78 | ATTS = [] 79 | Policy = '(' 80 | for j in temp: 81 | ATTS.append(str(j)) 82 | Policy += 'and ' + str(j) if j != 0 else '0' 83 | Policy += ' ' 84 | Policy = Policy[:-1] 85 | Policy += ')' # Policy == (0 and 1 and 2 and ... and n) 86 | # print(Policy) 87 | time_enc, time_dec, times_enc, times_dec = Round(ATTS, Policy) 88 | 89 | Times_enc.append(time_enc) 90 | Times_dec.append(time_dec) 91 | 92 | for time in Times_enc: 93 | print(time) 94 | print() 95 | for time in Times_dec: 96 | print(time) 97 | print() 98 | 99 | 100 | 101 | 102 | if __name__ == "__main__": 103 | main() 104 | 105 | -------------------------------------------------------------------------------- /Benchmark/README.md: -------------------------------------------------------------------------------- 1 | ## 测试 2 | 3 | 性能测试分为两类测试 4 | 5 | + CP-ABE关于属性个数的加解密时间 6 | + 对称密码关于文件大小的加解密时间 7 | 8 | 9 | 10 | #### CP-ABE加解密时间测试 11 | 12 | ​ 依据从5个属性到100个属性, 5个属性一个步长, 共20组测试集, 对随机生成的Key参数进行加解密测试, 每组测量30次, 取平均值作为每组的测试结果 13 | 14 | ```py 15 | cd ./Benchmark/CP-ABE 16 | python Test-CP-ABE.py 17 | ``` 18 | 19 | 20 | 21 | #### 对称密码加解密时间测试 22 | 23 | 生成特定大小的文件, 可以生成1k, 10k, ..., 至1G以上的文件 24 | 25 | ```bash 26 | cd ./Benchmark/Symmetry 27 | python file-gen.py 28 | ``` 29 | 30 | 测试文件加解密时间 31 | 32 | ​ 分别取1k, 10k, 100k, 1m, 10m, 100m, 以量级为步长, 共6组用户数据进行对称密码算法的加解密时间测试, 每组测量10次取平均值作为测试结果 33 | 34 | ```bash 35 | python Test-SymmetricCrypto.py 36 | ``` 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Benchmark/Symmetry/Test-SymmetricCrypto.py: -------------------------------------------------------------------------------- 1 | from charm.toolbox.pairinggroup import PairingGroup 2 | from charm.schemes.abenc.abenc_bsw07 import CPabe_BSW07 3 | from charm.adapters.abenc_adapt_hybrid import HybridABEnc 4 | import pickle 5 | from time import * 6 | from numpy import * 7 | 8 | filenames = ['Data1k.txt', 'Data10k.txt', 'Data100k.txt', 'Data1m.txt', 'Data10m.txt', 'Data100m.txt'] 9 | 10 | if __name__ == "__main__": 11 | groupObj = PairingGroup('SS512') 12 | cpabe = CPabe_BSW07(groupObj) 13 | hyb_abe = HybridABEnc(cpabe, groupObj) 14 | (pk, mk) = hyb_abe.setup() 15 | access_policy = '((four or three) and (two or one))' 16 | sk = hyb_abe.keygen(pk, mk, ['ONE', 'TWO', 'THREE']) 17 | 18 | ETime = [] 19 | DTime = [] 20 | 21 | for i in range(len(filenames)): 22 | enc_time = [] 23 | dec_time = [] 24 | 25 | for _ in range(10): # test for 10 times 26 | sourcefile = open(filenames[i], 'rb') 27 | plaintext = sourcefile.read() 28 | sourcefile.close() 29 | 30 | encryptedfile = open(filenames[i] + ".enc", 'wb') 31 | 32 | start_time = time() 33 | ciphertext = hyb_abe.encrypt(pk, plaintext, access_policy) 34 | ciphertext["c1"]["C"] = groupObj.serialize(ciphertext["c1"]["C"]) 35 | for key in ciphertext["c1"]["Cy"] : 36 | ciphertext["c1"]["Cy"][key] = groupObj.serialize(ciphertext["c1"]["Cy"][key]) 37 | ciphertext["c1"]["C_tilde"] = groupObj.serialize(ciphertext["c1"]["C_tilde"]) 38 | for key in ciphertext["c1"]["Cyp"] : 39 | ciphertext["c1"]["Cyp"][key] = groupObj.serialize(ciphertext["c1"]["Cyp"][key]) 40 | end_time = time() 41 | enc_time.append(end_time - start_time) 42 | 43 | 44 | pickle.dump(ciphertext, encryptedfile) 45 | encryptedfile.close() 46 | 47 | encryptedfile = open(filenames[i] + ".enc", 'rb') 48 | ciphertext2 = pickle.load(encryptedfile) 49 | 50 | start_time = time() 51 | ciphertext2["c1"]["C"] = groupObj.deserialize(ciphertext2["c1"]["C"]) 52 | for key in ciphertext2["c1"]["Cy"]: 53 | ciphertext2["c1"]["Cy"][key] = groupObj.deserialize(ciphertext2["c1"]["Cy"][key]) 54 | ciphertext2["c1"]["C_tilde"] = groupObj.deserialize(ciphertext2["c1"]["C_tilde"]) 55 | for key in ciphertext2["c1"]["Cyp"]: 56 | ciphertext2["c1"]["Cyp"][key] = groupObj.deserialize(ciphertext2["c1"]["Cyp"][key]) 57 | 58 | recovertext = hyb_abe.decrypt(pk, sk, ciphertext2) 59 | end_time = time() 60 | dec_time.append(end_time - start_time) 61 | 62 | print(recovertext == plaintext) 63 | encryptedfile.close() 64 | 65 | ETime.append(mean(enc_time)) 66 | DTime.append(mean(dec_time)) 67 | 68 | print(ETime) 69 | print() 70 | print(DTime) -------------------------------------------------------------------------------- /Benchmark/Symmetry/file-gen.py: -------------------------------------------------------------------------------- 1 | import os 2 | import random 3 | from time import * 4 | 5 | def genSizeFile(fileName, fileSize): 6 | #file path 7 | filePath="Data"+fileName+".txt" 8 | 9 | # 生成固定大小的文件 10 | # date size 11 | ds=0 12 | with open(filePath, "w", encoding="utf8") as f: 13 | while ds>~/.bashrc 63 | source ~/.bashrc 64 | 65 | ``` 66 | 67 | 68 | 69 | #### Pyparsing 70 | 71 | ```bash 72 | sudo apt-get update 73 | python -m pip install pyparsing 74 | ``` 75 | 76 | 77 | 78 | #### GMP 79 | 80 | ```bash 81 | sudo apt-get update 82 | sudo apt-get install flex bison 83 | ./configure 84 | # sudo apt install make 85 | make 86 | sudo make install 87 | 88 | make check # 最后再查看是否全部安装正确 89 | ``` 90 | 91 | 92 | 93 | #### PBC 94 | 95 | ```bash 96 | ./configure 97 | make 98 | sudo make install 99 | 100 | make check #查看是否正确 101 | ``` 102 | 103 | 104 | 105 | #### OpenSSL 106 | 107 | 系统自带OpenSSL可以不需要安装, 如果后续安装提示OpenSSL出错, 需要执行以下过程安装更新版本 108 | 109 | ```bash 110 | sudo apt-get update && sudo apt-get upgrade 111 | sudo apt install build-essential checkinstall zlib1g-dev -y 112 | cd /usr/local/src/ 113 | sudo wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz 114 | sudo tar -xf openssl-1.1.1c.tar.gz 115 | cd openssl-1.1.1c 116 | sudo ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib 117 | sudo make 118 | sudo make test 119 | sudo make install 120 | cd /etc/ld.so.conf.d/ 121 | sudo nano openssl-1.1.1c.conf 122 | # 填入以下内容, 不包括###### 123 | ############ 124 | /usr/local/ssl/lib 125 | ############ 126 | # ctrl + o保存, ctrl + x退出 127 | 128 | sudo ldconfig -v 129 | sudo mv /usr/bin/c_rehash /usr/bin/c_rehash.backup 130 | sudo mv /usr/bin/openssl /usr/bin/openssl.backup 131 | sudo nano /etc/environment 132 | # 在PATH之后添加以下内容, 不包括######, 直接覆盖原内容也可, 如果不是原型机环境就注意环境变量的差异 133 | ################ 134 | # PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" 135 | ":/usr/local/ssl/bin" 136 | ################ 137 | 138 | source /etc/environment 139 | echo $PATH 140 | 141 | which openssl 142 | openssl version -a 143 | ``` 144 | 145 | 146 | 147 | #### Charm-crypto 148 | 149 | ```bash 150 | # 此时是默认python3.7进行安装操作 151 | ./configure.sh 152 | sudo make install 153 | ``` 154 | 155 | 156 | 157 | 具体安装流程可参考我的个人博客 158 | 159 | https://blog.csdn.net/qq_33976344/article/details/115383904 -------------------------------------------------------------------------------- /Environment/charm-dev.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/Environment/charm-dev.zip -------------------------------------------------------------------------------- /Environment/gmp-6.1.2.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/Environment/gmp-6.1.2.tar.bz2 -------------------------------------------------------------------------------- /Environment/openssl-1.0.2s.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/Environment/openssl-1.0.2s.tar.gz -------------------------------------------------------------------------------- /Environment/pbc-0.5.14.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/Environment/pbc-0.5.14.tar.gz -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CP-ABE-CloudDataSystem 2 | 2021-USTC-信息安全作品赛数据安全CP-ABE云数据系统项目, 基于CP-ABE方案实现安全的数据存储和访问服务的数据系统. 3 | 4 | 5 | 6 | ## 使用说明 7 | 8 | 9 | 10 | ### 环境 11 | 12 | + 系统: linux (于ubuntu20.0.4上测试通过) 13 | 14 | + python == 3.7 15 | + charm-crypt 16 | + php > 7 + apache2 17 | 18 | > 注:关于charm-cryto的安装,详见 https://blog.csdn.net/qq_33976344/article/details/115383904 19 | 20 | 21 | 22 | 23 | 24 | ### setup 25 | 26 | + apache使用默认目录/var/www/html,目录需有完全读入读写权限(chmod 777) 27 | 28 | + 将html下文件复制至/var/www/html下 29 | + 启动apache2 ( service apache2 start) 30 | + 将解密脚本(decrypt.py)下载至本地 31 | 32 | 33 | 34 | 35 | 36 | 37 | ### 使用 38 | 39 | #### 注册 40 | 41 | + 输入用户名,密码,学校,身份 42 | + 复制返回的pk,sk并保存至本地文件中 43 | 44 | + 将解密脚本中下面两项换成pk, sk的路径。 45 | 46 | ~~~python 47 | pk_path = 'your pk path' 48 | sk_path = 'your sk path' 49 | ~~~ 50 | 51 | 52 | 53 | #### 登陆 54 | 55 | + 访问http://ip:port/login.html 56 | 57 | + 输入用户名密码登陆 58 | 59 | 60 | 61 | #### 下载 62 | 63 | + 点击右侧的下载按钮下载文件 64 | + 用本地的解密脚本解密,解密方式: 65 | 66 | ~~~shell 67 | python decript.py 68 | ~~~ 69 | 70 | 71 | 72 | #### 上传 73 | 74 | + 通过界面上方的"选择文件"选择要上传的文件。 75 | + 通过"访问结构"输入指定的访问结构(括号分隔,使用and 或 or 连接)。 76 | 77 | > e.g : ((A and B) and (C or D)) 78 | 79 | + 点击 Submit上传。 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /decrypt.py: -------------------------------------------------------------------------------- 1 | from charm.toolbox.pairinggroup import PairingGroup, GT 2 | from charm.schemes.abenc.abenc_bsw07 import CPabe_BSW07 3 | from charm.adapters.abenc_adapt_hybrid import HybridABEnc 4 | from json import dumps, loads 5 | import sys 6 | 7 | pk_path = 'your pk path' 8 | sk_path = 'your sk path' 9 | 10 | if __name__ == "__main__": 11 | filename: str = sys.argv[1] 12 | 13 | rp = open(filename, 'rb') 14 | cipher = loads(rp.read()) 15 | rp.close() 16 | 17 | group = PairingGroup('SS512') 18 | cp_abe = CPabe_BSW07(group) 19 | hyb_abe = HybridABEnc(cp_abe, group) 20 | 21 | cipher["c1"]["C"] = group.deserialize(cipher["c1"]["C"].encode('utf-8')) 22 | for key in cipher["c1"]["Cy"]: 23 | cipher["c1"]["Cy"][key] = group.deserialize(cipher["c1"]["Cy"][key].encode('utf-8')) 24 | cipher["c1"]["C_tilde"] = group.deserialize(cipher["c1"]["C_tilde"].encode('utf-8')) 25 | for key in cipher["c1"]["Cyp"]: 26 | cipher["c1"]["Cyp"][key] = group.deserialize(cipher["c1"]["Cyp"][key].encode('utf-8')) 27 | 28 | print(cipher) 29 | pk_fp = open(pk_path, 'r') 30 | re_pk = loads(pk_fp.read()) 31 | pk_fp.close() 32 | re_pk['g'] = group.deserialize(re_pk['g'].encode('utf-8')) 33 | re_pk['g2'] = group.deserialize(re_pk['g2'].encode('utf-8')) 34 | re_pk['h'] = group.deserialize(re_pk['h'].encode('utf-8')) 35 | re_pk['f'] = group.deserialize(re_pk['f'].encode('utf-8')) 36 | re_pk['e_gg_alpha'] = group.deserialize(re_pk['e_gg_alpha'].encode('utf-8')) 37 | 38 | sk_fp = open(sk_path, 'r') 39 | sk = loads(sk_fp.read()) 40 | sk_fp.close() 41 | sk['D'] = group.deserialize(sk['D'].encode('utf-8')) 42 | for i in sk['Dj']: 43 | sk['Dj'][i] = group.deserialize(sk['Dj'][i].encode('utf-8')) 44 | 45 | for j in sk['Djp']: 46 | sk['Djp'][j] = group.deserialize(sk['Djp'][j].encode('utf-8')) 47 | 48 | msg = hyb_abe.decrypt(re_pk, sk, cipher) 49 | print(msg.decode('utf-8')) 50 | 51 | -------------------------------------------------------------------------------- /html/assets/css/ace-ie.min.css: -------------------------------------------------------------------------------- 1 | .btn,.dropdown-menu li>a,.dropdown-submenu>a,.navbar .btn-navbar,.navbar .navbar-inner,.progress,.progress .bar{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)!important}#cboxLoadingGraphic>.ace-icon,#cboxLoadingGraphic>.fa,#cboxLoadingGraphic>.glyphicon{display:inline-block;background:url(images/loading.gif) center no-repeat #FFF}#cboxLoadingGraphic>.ace-icon:before,#cboxLoadingGraphic>.fa:before,#cboxLoadingGraphic>.glyphicon:before{display:none}.widget-box-overlay>.loading-icon{display:inline-block;width:24px;height:24px;background:url(images/loading.gif) center no-repeat}.widget-box-overlay>.loading-icon:before{display:none}@media (max-width:991px){.sidebar.responsive{display:none}.sidebar.responsive.display{display:block}}.profile-user-info{width:98%}.wysiwyg-toolbar .dropdown-menu{min-width:260px}.modal.modal-contained{position:absolute!important}.rtl .sidebar .nav-list li.active>a:after,.rtl .sidebar .nav-list li.active>a:before,.rtl .sidebar .nav-list li>.arrow{direction:ltr;text-align:left}@media \0screen{html{position:absolute;width:100%}body{background-color:#E9E9E9}.sidebar-fixed:before{left:0}.sidebar .nav-list>li:before{z-index:4444;left:-3px}.nav-list>li>.submenu li.open>a>.menu-icon{display:inline-block}.ace-nav>li.white-opaque{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF', GradientType=0 )}.ace-nav>li.dark-opaque{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#33000000', endColorstr='#33000000', GradientType=0 )}.ace-nav>li.open.transparent>a,.ace-nav>li.transparent>a:focus,.ace-nav>li.transparent>a:hover{background-color:transparent!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000', GradientType=0 )}.ace-nav>li.light-10>a{background-color:transparent!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#19FFFFFF', endColorstr='#19FFFFFF', GradientType=0 )}.ace-nav>li.light-10>a:focus,.ace-nav>li.light-10>a:hover,.ace-nav>li.open.light-10>a{background-color:transparent!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF', GradientType=0 )!important}.ace-nav>li.dark-10>a{background-color:transparent!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000', GradientType=0 )}.ace-nav>li.dark-10>a:focus,.ace-nav>li.dark-10>a:hover,.ace-nav>li.open.dark-10>a{background-color:transparent!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#33000000', endColorstr='#33000000', GradientType=0 )}.navbar .navbar-nav>li.open>a,.navbar .navbar-nav>li>a:focus,.navbar .navbar-nav>li>a:hover{background-color:transparent!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000', GradientType=0 )!important}.infobox-dark>.badge{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#33FFFFFF', endColorstr='#33FFFFFF', GradientType=0 )!important}.widget-toolbar-light{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#D8FFFFFF', endColorstr='#D8FFFFFF', GradientType=0 )!important}input[type=checkbox].ace,input[type=checkbox].ace.ace-switch,input[type=radio].ace,input[type=radio].ace.ace-switch,label input[type=checkbox].ace,label input[type=checkbox].ace.ace-switch,label input[type=radio].ace,label input[type=radio].ace.ace-switch{position:static!important;width:auto!important;height:auto!important;z-index:auto!important}input[type=checkbox].ace+.lbl,input[type=checkbox].ace~.lbl,input[type=radio].ace+.lbl,input[type=radio].ace~.lbl{min-height:auto!important;min-width:auto!important;width:auto!important;height:auto!important;position:static!important}input[type=checkbox].ace.ace-switch{width:auto!important}input[type=checkbox].ace.ace-switch+.lbl,input[type=checkbox].ace.ace-switch~.lbl{margin:0!important;min-height:auto!important}.checkbox label input.ace[type=checkbox]+.lbl,.checkbox label input.ace[type=checkbox]~.lbl,.radio label input.ace[type=radio]+.lbl,.radio label input.ace[type=radio]~.lbl{margin-left:auto}[class*=input-],label{max-width:none!important}.wizard-steps li:first-child:before{max-width:100%;left:0}.login-layout .widget-box{display:none;visibility:visible;position:static}.login-layout .widget-box.visible{display:block}.pricing-box-small:hover{left:-1px;top:-3px}.ace-thumbnails>li>a>img{width:auto!important}.ace-thumbnails>li>:first-child>.text{display:none}.ace-thumbnails>li:hover>:first-child>.text{display:block}.ace-thumbnails>li>.tools,.ace-thumbnails>li>:first-child>.text{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C000000', endColorstr='#8C000000', GradientType=0)!important}.btn.btn-app.btn-light{border:1px solid #D9D9D9}.btn.btn-app.btn-yellow{border:1px solid #FEE188}.widget-box-overlay{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#55000000', endColorstr='#55000000', GradientType=0 )!important}.ace-file-overlay{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#7F000000', endColorstr='#7F000000', GradientType=0 )!important}.ace-file-overlay>.ace-icon,.ace-file-overlay>.fa,.ace-file-overlay>.glyphicon{display:inline-block;width:32px;height:32px;background:url(images/loading.gif) center no-repeat}.ace-file-overlay>.ace-icon:before,.ace-file-overlay>.fa:before,.ace-file-overlay>.glyphicon:before,.itemdiv.dialogdiv>.body:before,.scroller-active .scroller-bar,.scroller-bar,.widget-body .md-header .btn,.widget-body .md-header .btn-inverse{display:none}.grid3{width:31%}.grid4{width:23%}.fc-event-hori,.fc-event-vert{border-width:0!important}[class*=tab-color-] .nav-tabs>li>a>.ace-icon:first-child,[class*=tab-color-] .nav-tabs>li>a>.fa:first-child{color:#666!important}.dropdown-preview>.dropdown-menu{*width:180px}.ui-autocomplete,.ui-datepicker,.ui-menu{border:1px solid #CCC}.ui-widget-overlay{filter:alpha(opacity=100)!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#44000000', endColorstr='#44000000', GradientType=0 )!important}.message-content{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF', GradientType=0 )!important}.gritter-item-wrapper{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA323232', endColorstr='#EA323232', GradientType=0 )!important}.gritter-item-wrapper.gritter-info{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA315185', endColorstr='#EA315185', GradientType=0 )!important}.gritter-item-wrapper.gritter-error{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA992812', endColorstr='#EA992812', GradientType=0 )!important}.gritter-item-wrapper.gritter-success{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA59834B', endColorstr='#EA59834B', GradientType=0 )!important}.gritter-item-wrapper.gritter-warning{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#EABE701F', endColorstr='#EABE701F', GradientType=0 )!important}.gritter-item-wrapper.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2F5F5F5', endColorstr='#F2F5F5F5', GradientType=0 )!important}.gritter-info.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2E8F2FF', endColorstr='#F2E8F2FF', GradientType=0 )!important}.gritter-error.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2FFEBEB', endColorstr='#F2FFEBEB', GradientType=0 )!important}.gritter-success.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2EFFAE3', endColorstr='#F2EFFAE3', GradientType=0 )!important}.gritter-warning.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2FCF8E3', endColorstr='#F2FCF8E3', GradientType=0 )!important}.widget-body .md-header .btn,.widget-header .wysiwyg-toolbar .btn-group>.btn{background:0 0!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#40FFFFFF', endColorstr='#40FFFFFF', GradientType=0 )!important}.widget-body .md-header .btn-inverse,.widget-header .wysiwyg-toolbar .btn-group>.btn.active{background:0 0!important;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#40000000', endColorstr='#40000000', GradientType=0 )!important}.nav-wrap:hover+.scroller-active .scroller-bar,.scroller-active .scroller-bar.active,.scroller-active .scroller-bar:active,.scroller-active:hover .scroller-bar{display:block}.ace-settings-box{display:none}.ace-settings-box.open{display:block}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.aside.aside-hidden.aside-vc .modal-dialog{width:0}.aside.aside-hidden.aside-hz .modal-dialog{height:0}.btn-group>.btn-app:first-child{margin-right:24px}.btn-group>.btn-app.dropdown-toggle:first-child{margin-right:auto}.sidebar .submenu.sub-scroll{overflow-y:auto}.tree .tree-branch>.tree-branch-header:hover{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#1A62A8D1', endColorstr='#1A62A8D1', GradientType=0 )}.tree .tree-selected>.tree-branch-header{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#2E62A8D1', endColorstr='#2E62A8D1', GradientType=0 )}.tree .tree-item:hover{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#1A62A8D1', endColorstr='#1A62A8D1', GradientType=0 )}.tree .tree-selected,.tree-selected:hover{filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#2862A8D1', endColorstr='#2862A8D1', GradientType=0 )}} -------------------------------------------------------------------------------- /html/assets/css/bootstrap-colorpicker.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Colorpicker 3 | * http://mjolnic.github.io/bootstrap-colorpicker/ 4 | * 5 | * Originally written by (c) 2012 Stefan Petre 6 | * Licensed under the Apache License v2.0 7 | * http://www.apache.org/licenses/LICENSE-2.0.txt 8 | * 9 | */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url(../images/bootstrap-colorpicker/saturation.png)}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-alpha,.colorpicker-hue{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-alpha i,.colorpicker-hue i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url(../images/bootstrap-colorpicker/hue.png)}.colorpicker-alpha,.colorpicker-color{background-image:url(../images/bootstrap-colorpicker/alpha.png)}.colorpicker-alpha{display:none}.colorpicker:after,.colorpicker:before{position:absolute;display:inline-block;content:''}.colorpicker-alpha,.colorpicker-hue,.colorpicker-saturation{background-size:contain}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:after,.colorpicker:before{line-height:0}.colorpicker:before{top:-7px;left:6px;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,.2)}.colorpicker:after{clear:both;top:-6px;left:7px;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-selectors{display:none;height:10px;margin-top:5px;clear:both}.colorpicker-selectors i{float:left;width:10px;height:10px;cursor:pointer}.colorpicker-selectors i+i{margin-left:3px}.colorpicker-element .add-on i,.colorpicker-element .input-group-addon i{display:inline-block;width:16px;height:16px;vertical-align:text-top;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;z-index:auto;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-alpha,.colorpicker.colorpicker-horizontal .colorpicker-hue{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-alpha i,.colorpicker.colorpicker-horizontal .colorpicker-hue i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:none}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url(../images/bootstrap-colorpicker/hue-horizontal.png)}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url(../images/bootstrap-colorpicker/alpha-horizontal.png)}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block}.colorpicker-right:before{right:6px;left:auto}.colorpicker-right:after{right:7px;left:auto} -------------------------------------------------------------------------------- /html/assets/css/bootstrap-datetimepicker.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Datetimepicker for Bootstrap 3 3 | * version : 4.17.37 4 | * https://github.com/Eonasdan/bootstrap-datetimepicker/ 5 | */.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:after,.bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.new,.bootstrap-datetimepicker-widget table td.old{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0} -------------------------------------------------------------------------------- /html/assets/css/bootstrap-duallistbox.min.css: -------------------------------------------------------------------------------- 1 | .bootstrap-duallistbox-container .buttons{width:100%;margin-bottom:-1px}.bootstrap-duallistbox-container label{display:block}.bootstrap-duallistbox-container .info{display:inline-block;margin-bottom:5px;font-size:11px}.bootstrap-duallistbox-container .clear1,.bootstrap-duallistbox-container .clear2{display:none;font-size:10px}.bootstrap-duallistbox-container .box1.filtered .clear1,.bootstrap-duallistbox-container .box2.filtered .clear2{display:inline-block}.bootstrap-duallistbox-container .move,.bootstrap-duallistbox-container .remove{width:60%}.bootstrap-duallistbox-container .btn-group .btn{border-bottom-left-radius:0;border-bottom-right-radius:0}.bootstrap-duallistbox-container .moveall,.bootstrap-duallistbox-container .removeall{width:40%}.bootstrap-duallistbox-container.bs2compatible .btn-group>.btn+.btn{margin-left:0}.bootstrap-duallistbox-container select{border-top-left-radius:0;border-top-right-radius:0;width:100%;height:300px;padding:0}.bootstrap-duallistbox-container .filter{display:inline-block;width:100%;height:31px;margin:0 0 5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-duallistbox-container .filter.placeholder{color:#aaa}.bootstrap-duallistbox-container.moveonselect .move,.bootstrap-duallistbox-container.moveonselect .remove{display:none}.bootstrap-duallistbox-container.moveonselect .moveall,.bootstrap-duallistbox-container.moveonselect .removeall{width:100%} -------------------------------------------------------------------------------- /html/assets/css/bootstrap-multiselect.min.css: -------------------------------------------------------------------------------- 1 | .multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{margin:5px}.multiselect-container>li{padding:0}.multiselect-container>li>a.multiselect-all label{font-weight:700}.multiselect-container>li.multiselect-group label{margin:0;padding:3px 20px;height:100%;font-weight:700}.multiselect-container>li.multiselect-group-clickable label{cursor:pointer}.multiselect-container>li>a{padding:0}.multiselect-container>li>a>label{margin:0;height:100%;cursor:pointer;font-weight:400;padding:3px 20px 3px 40px}.multiselect-container>li>a>label.checkbox,.multiselect-container>li>a>label.radio{margin:0}.multiselect-container>li>a>label>input[type=checkbox]{margin-bottom:5px}.btn-group>.btn-group:nth-child(2)>.multiselect.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.form-inline .multiselect-container label.checkbox,.form-inline .multiselect-container label.radio{padding:3px 20px 3px 40px}.form-inline .multiselect-container li a label.checkbox input[type=checkbox],.form-inline .multiselect-container li a label.radio input[type=radio]{margin-left:-20px;margin-right:0} -------------------------------------------------------------------------------- /html/assets/css/bootstrap-timepicker.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Timepicker Component for Twitter Bootstrap 3 | * 4 | * Copyright 2013 Joris de Wit 5 | * 6 | * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */.bootstrap-timepicker{position:relative}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu{left:auto;right:0}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before{left:auto;right:12px}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after{left:auto;right:13px}.bootstrap-timepicker .input-group-addon{cursor:pointer}.bootstrap-timepicker .input-group-addon i{display:inline-block;width:16px;height:16px}.bootstrap-timepicker-widget.dropdown-menu{padding:4px}.bootstrap-timepicker-widget.dropdown-menu.open{display:inline-block}.bootstrap-timepicker-widget.dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.dropdown-menu:after{border-bottom:6px solid #FFF;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.timepicker-orient-left:before{left:6px}.bootstrap-timepicker-widget.timepicker-orient-left:after{left:7px}.bootstrap-timepicker-widget.timepicker-orient-right:before{right:6px}.bootstrap-timepicker-widget.timepicker-orient-right:after{right:7px}.bootstrap-timepicker-widget.timepicker-orient-top:before{top:-7px}.bootstrap-timepicker-widget.timepicker-orient-top:after{top:-6px}.bootstrap-timepicker-widget.timepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.bootstrap-timepicker-widget.timepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.bootstrap-timepicker-widget a.btn,.bootstrap-timepicker-widget input{border-radius:4px}.bootstrap-timepicker-widget table{width:100%;margin:0}.bootstrap-timepicker-widget table td{text-align:center;height:30px;margin:0;padding:2px}.bootstrap-timepicker-widget table td:not(.separator){min-width:30px}.bootstrap-timepicker-widget table td span{width:100%}.bootstrap-timepicker-widget table td a{border:1px solid transparent;width:100%;display:inline-block;margin:0;padding:8px 0;outline:0;color:#333}.bootstrap-timepicker-widget table td a:hover{text-decoration:none;background-color:#eee;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border-color:#ddd}.bootstrap-timepicker-widget table td a i{margin-top:2px;font-size:18px}.bootstrap-timepicker-widget table td input{width:25px;margin:0;text-align:center}.bootstrap-timepicker-widget .modal-content{padding:4px}@media (min-width:767px){.bootstrap-timepicker-widget.modal{width:200px;margin-left:-100px}}@media (max-width:767px){.bootstrap-timepicker,.bootstrap-timepicker .dropdown-menu{width:100%}} -------------------------------------------------------------------------------- /html/assets/css/colorbox.min.css: -------------------------------------------------------------------------------- 1 | #cboxWrapper,.cboxPhoto{max-width:none}.cboxIframe,.cboxPhoto{display:block;border:0}#cboxCurrent,#cboxTitle{position:absolute;color:#949494;bottom:4px}#cboxClose:active,#cboxNext:active,#cboxPrevious:active,#cboxSlideshow:active,#colorbox{outline:0}#cboxOverlay,#cboxWrapper,#colorbox{position:absolute;top:0;left:0;z-index:9999;overflow:hidden}#cboxOverlay{position:fixed;width:100%;height:100%;background:url(images/overlay.png);opacity:.9;filter:alpha(opacity=90)}#cboxBottomLeft,#cboxMiddleLeft{clear:left}#cboxContent{position:relative;background:#fff;overflow:hidden}#cboxTitle{margin:0;left:0;text-align:center;width:100%}#cboxLoadingGraphic,#cboxLoadingOverlay{position:absolute;top:0;left:0;width:100%;height:100%}.cboxPhoto{float:left;margin:auto;-ms-interpolation-mode:bicubic}.cboxIframe{width:100%;height:100%;padding:0;margin:0}#cboxContent,#cboxLoadedContent,#colorbox{box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}#cboxTopLeft{width:21px;height:21px;background:url(images/controls.png) -101px 0 no-repeat}#cboxTopRight{width:21px;height:21px;background:url(images/controls.png) -130px 0 no-repeat}#cboxBottomLeft{width:21px;height:21px;background:url(images/controls.png) -101px -29px no-repeat}#cboxBottomRight{width:21px;height:21px;background:url(images/controls.png) -130px -29px no-repeat}#cboxMiddleLeft{width:21px;background:url(images/controls.png) left top repeat-y}#cboxMiddleRight{width:21px;background:url(images/controls.png) right top repeat-y}#cboxTopCenter{height:21px;background:url(images/border.png) repeat-x}#cboxBottomCenter{height:21px;background:url(images/border.png) 0 -29px repeat-x}.cboxIframe{background:#fff}#cboxError{padding:50px;border:1px solid #ccc}#cboxLoadedContent{overflow:auto;-webkit-overflow-scrolling:touch;margin-bottom:28px}#cboxCurrent{left:58px}#cboxLoadingOverlay{background:url(images/loading_background.png) center center no-repeat}#cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat}#cboxClose,#cboxNext,#cboxPrevious,#cboxSlideshow{cursor:pointer;border:0;padding:0;margin:0;overflow:visible;width:auto;background:0 0}#cboxClose,#cboxNext,#cboxPrevious{position:absolute;bottom:0;width:25px;height:25px;text-indent:-9999px}#cboxSlideshow{position:absolute;bottom:4px;right:30px;color:#0092ef}#cboxPrevious{left:0;background:url(images/controls.png) -75px 0 no-repeat}#cboxPrevious:hover{background-position:-75px -25px}#cboxNext{left:27px;background:url(images/controls.png) -50px 0 no-repeat}#cboxNext:hover{background-position:-50px -25px}#cboxClose{right:0;background:url(images/controls.png) -25px 0 no-repeat}#cboxClose:hover{background-position:-25px -25px}.cboxIE #cboxBottomCenter,.cboxIE #cboxBottomLeft,.cboxIE #cboxBottomRight,.cboxIE #cboxMiddleLeft,.cboxIE #cboxMiddleRight,.cboxIE #cboxTopCenter,.cboxIE #cboxTopLeft,.cboxIE #cboxTopRight{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF, endColorstr=#00FFFFFF)} -------------------------------------------------------------------------------- /html/assets/css/daterangepicker.min.css: -------------------------------------------------------------------------------- 1 | .daterangepicker{position:absolute;background:#fff;top:100px;left:20px;padding:4px;margin-top:1px;border-radius:4px;width:278px}.daterangepicker.opensleft:before{position:absolute;top:-7px;right:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,.2);content:''}.daterangepicker.opensleft:after{position:absolute;top:-6px;right:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.daterangepicker.openscenter:after,.daterangepicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto;display:inline-block;content:'';position:absolute}.daterangepicker.openscenter:before{top:-7px;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,.2)}.daterangepicker.openscenter:after{top:-6px;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent}.daterangepicker.opensright:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,.2);content:''}.daterangepicker.opensright:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.daterangepicker.dropup{margin-top:-5px}.daterangepicker.dropup:before{top:initial;bottom:-7px;border-bottom:initial;border-top:7px solid #ccc}.daterangepicker.dropup:after{top:initial;bottom:-6px;border-bottom:initial;border-top:6px solid #fff}.daterangepicker.dropdown-menu{max-width:none;z-index:3000}.daterangepicker.single .calendar,.daterangepicker.single .ranges{float:none}.daterangepicker .calendar{display:none;max-width:270px;margin:4px}.daterangepicker.show-calendar .calendar{display:block}.daterangepicker .calendar.single .calendar-table{border:none}.daterangepicker .calendar td,.daterangepicker .calendar th{white-space:nowrap;text-align:center;min-width:32px}.daterangepicker .calendar-table{border:1px solid #ddd;padding:4px;border-radius:4px;background:#fff}.daterangepicker table{width:100%;margin:0}.daterangepicker td,.daterangepicker th{text-align:center;width:20px;height:20px;border-radius:4px;white-space:nowrap;cursor:pointer}.daterangepicker td.off,.daterangepicker td.off.end-date,.daterangepicker td.off.in-range,.daterangepicker td.off.start-date{color:#999;background:#fff}.daterangepicker option.disabled,.daterangepicker td.disabled{color:#999;cursor:not-allowed;text-decoration:line-through}.daterangepicker td.available:hover,.daterangepicker th.available:hover{background:#eee}.daterangepicker td.in-range{background:#ebf4f8;border-radius:0}.daterangepicker td.start-date{border-radius:4px 0 0 4px}.daterangepicker td.end-date{border-radius:0 4px 4px 0}.daterangepicker td.start-date.end-date{border-radius:4px}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#357ebd;border-color:#3071a9;color:#fff}.daterangepicker td.week,.daterangepicker th.week{font-size:80%;color:#ccc}.daterangepicker select.monthselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default}.daterangepicker select.monthselect{margin-right:2%;width:56%}.daterangepicker select.yearselect{width:40%}.daterangepicker select.ampmselect,.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.secondselect{width:50px;margin-bottom:0}.daterangepicker th.month{width:auto}.daterangepicker .input-mini{border:1px solid #ccc;border-radius:4px;color:#555;display:block;height:30px;line-height:30px;vertical-align:middle;margin:0 0 5px;padding:0 6px 0 28px;width:100%}.daterangepicker .input-mini.active{border:1px solid #357ebd}.daterangepicker .daterangepicker_input i{position:absolute;left:8px;top:8px}.daterangepicker .daterangepicker_input{position:relative}.daterangepicker .calendar-time{text-align:center;margin:5px auto;line-height:30px;position:relative;padding-left:28px}.daterangepicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed}.daterangepicker .ranges{font-size:11px;float:none;margin:4px;text-align:left}.daterangepicker .ranges ul{list-style:none;margin:0 auto;padding:0;width:100%}.daterangepicker .ranges li{font-size:13px;background:#f5f5f5;border:1px solid #f5f5f5;color:#08c;padding:3px 12px;margin-bottom:8px;border-radius:5px;cursor:pointer}.daterangepicker .ranges li.active,.daterangepicker .ranges li:hover{background:#08c;border:1px solid #08c;color:#fff}@media (min-width:564px){.daterangepicker .calendar,.daterangepicker .ranges,.daterangepicker.single .calendar,.daterangepicker.single .ranges{float:left}.daterangepicker{width:auto}.daterangepicker .ranges ul{width:160px}.daterangepicker.single .ranges ul{width:100%}.daterangepicker .calendar.left .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.daterangepicker .calendar.right .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.daterangepicker .calendar.left{clear:left;margin-right:0}.daterangepicker.single .calendar.left{clear:none}.daterangepicker .calendar.right{margin-left:0}.daterangepicker .calendar.left .calendar-table,.daterangepicker .left .daterangepicker_input{padding-right:12px}}@media (min-width:730px){.daterangepicker .ranges{width:auto;float:left}.daterangepicker .calendar.left{clear:none}} -------------------------------------------------------------------------------- /html/assets/css/fonts.googleapis.com.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Open Sans'; 3 | font-style: normal; 4 | font-weight: 300; 5 | src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff'); 6 | } 7 | @font-face { 8 | font-family: 'Open Sans'; 9 | font-style: normal; 10 | font-weight: 400; 11 | src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); 12 | } 13 | -------------------------------------------------------------------------------- /html/assets/css/jquery-ui.custom.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.11.4 - 2015-09-20 2 | * http://jqueryui.com 3 | * Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, slider.css 4 | * Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} -------------------------------------------------------------------------------- /html/assets/css/jquery.gritter.min.css: -------------------------------------------------------------------------------- 1 | #gritter-notice-wrapper{position:fixed;top:20px;right:20px;width:301px;z-index:9999}#gritter-notice-wrapper.top-left{left:20px;right:auto}#gritter-notice-wrapper.bottom-right{top:auto;left:auto;bottom:20px;right:20px}#gritter-notice-wrapper.bottom-left{top:auto;right:auto;bottom:20px;left:20px}.gritter-item-wrapper{position:relative;margin:0 0 10px;background:url(../images/ie-spacer.gif)}.gritter-top{background:url(../images/gritter.png) left -30px no-repeat;height:10px}.hover .gritter-top{background-position:right -30px}.gritter-bottom{background:url(../images/gritter.png) left bottom no-repeat;height:8px;margin:0}.hover .gritter-bottom{background-position:bottom right}.gritter-item{display:block;background:url(../images/gritter.png) left -40px no-repeat;color:#eee;padding:2px 11px 8px;font-size:11px;font-family:verdana}.hover .gritter-item{background-position:right -40px}.gritter-item p{padding:0;margin:0;word-wrap:break-word}.gritter-close{display:none;position:absolute;top:5px;left:3px;background:url(../images/gritter.png) left top no-repeat;cursor:pointer;width:30px;height:30px;text-indent:-9999em}.gritter-title{font-size:14px;font-weight:700;padding:0 0 7px;display:block;text-shadow:1px 1px 0 #000}.gritter-image{width:48px;height:48px;float:left}.gritter-with-image,.gritter-without-image{padding:0}.gritter-with-image{width:220px;float:right}.gritter-light .gritter-bottom,.gritter-light .gritter-close,.gritter-light .gritter-item,.gritter-light .gritter-top{background-image:url(../images/gritter-light.png);color:#222}.gritter-light .gritter-title{text-shadow:none} -------------------------------------------------------------------------------- /html/assets/css/prettify.min.css: -------------------------------------------------------------------------------- 1 | .com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#D14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 33px}ol.linenums li{padding-left:12px;color:#bebec5;line-height:20px;text-shadow:0 1px 0 #fff} -------------------------------------------------------------------------------- /html/assets/css/upload.css: -------------------------------------------------------------------------------- 1 | .file { 2 | position: relative; 3 | display: inline-block; 4 | background: #D0EEFF; 5 | border: 1px solid #99D3F5; 6 | border-radius: 4px; 7 | padding: 4px 12px; 8 | overflow: hidden; 9 | color: #1E88C7; 10 | text-decoration: none; 11 | text-indent: 0; 12 | line-height: 20px; 13 | } 14 | .file input { 15 | position: absolute; 16 | font-size: 100px; 17 | right: 0; 18 | top: 0; 19 | opacity: 0; 20 | } 21 | .file:hover { 22 | background: #AADFFD; 23 | border-color: #78C3F3; 24 | color: #004974; 25 | text-decoration: none; 26 | } 27 | 修改后 -------------------------------------------------------------------------------- /html/assets/font-awesome/4.5.0/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/font-awesome/4.5.0/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /html/assets/font-awesome/4.5.0/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/font-awesome/4.5.0/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /html/assets/font-awesome/4.5.0/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/font-awesome/4.5.0/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /html/assets/font-awesome/4.5.0/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/font-awesome/4.5.0/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /html/assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /html/assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /html/assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /html/assets/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /html/assets/images/avatars/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/avatars/avatar.png -------------------------------------------------------------------------------- /html/assets/images/avatars/avatar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/avatars/avatar1.png -------------------------------------------------------------------------------- /html/assets/images/avatars/avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/avatars/avatar2.png -------------------------------------------------------------------------------- /html/assets/images/avatars/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/avatars/avatar3.png -------------------------------------------------------------------------------- /html/assets/images/avatars/avatar4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/avatars/avatar4.png -------------------------------------------------------------------------------- /html/assets/images/avatars/avatar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/avatars/avatar5.png -------------------------------------------------------------------------------- /html/assets/images/avatars/profile-pic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/avatars/profile-pic.jpg -------------------------------------------------------------------------------- /html/assets/images/avatars/user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/avatars/user.jpg -------------------------------------------------------------------------------- /html/assets/images/bootstrap-colorpicker/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/bootstrap-colorpicker/alpha-horizontal.png -------------------------------------------------------------------------------- /html/assets/images/bootstrap-colorpicker/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/bootstrap-colorpicker/alpha.png -------------------------------------------------------------------------------- /html/assets/images/bootstrap-colorpicker/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/bootstrap-colorpicker/hue-horizontal.png -------------------------------------------------------------------------------- /html/assets/images/bootstrap-colorpicker/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/bootstrap-colorpicker/hue.png -------------------------------------------------------------------------------- /html/assets/images/bootstrap-colorpicker/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/bootstrap-colorpicker/saturation.png -------------------------------------------------------------------------------- /html/assets/images/email/email1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/email/email1.png -------------------------------------------------------------------------------- /html/assets/images/email/email2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/email/email2.png -------------------------------------------------------------------------------- /html/assets/images/email/email3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/email/email3.png -------------------------------------------------------------------------------- /html/assets/images/email/email4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/email/email4.png -------------------------------------------------------------------------------- /html/assets/images/gallery/image-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/image-1.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/image-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/image-2.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/image-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/image-3.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/image-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/image-4.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/image-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/image-5.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/image-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/image-6.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/thumb-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/thumb-1.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/thumb-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/thumb-2.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/thumb-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/thumb-3.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/thumb-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/thumb-4.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/thumb-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/thumb-5.jpg -------------------------------------------------------------------------------- /html/assets/images/gallery/thumb-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/gallery/thumb-6.jpg -------------------------------------------------------------------------------- /html/assets/images/placeholder/165x90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/placeholder/165x90.png -------------------------------------------------------------------------------- /html/assets/images/placeholder/255x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/placeholder/255x150.png -------------------------------------------------------------------------------- /html/assets/images/placeholder/530x270.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/placeholder/530x270.png -------------------------------------------------------------------------------- /html/assets/images/placeholder/550x280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/USTC-DataSecurity2021/CP-ABE-CloudDataSystem/8fdc9ec2d960a008a78160b737d71441ddda7ea4/html/assets/images/placeholder/550x280.png -------------------------------------------------------------------------------- /html/assets/js/ace-editable.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | Image editable input. 3 | **/ 4 | !function(a){"use strict";var b=function(a){this.init("image",a,b.defaults),"on_error"in a.image&&(this.on_error=a.image.on_error,delete a.image.on_error),"on_success"in a.image&&(this.on_success=a.image.on_success,delete a.image.on_success),"max_size"in a.image&&(this.max_size=a.image.max_size,delete a.image.max_size),this.initImage(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initImage:function(b,c){this.options.image=a.extend({},c.image,b.image),this.name=this.options.image.name||"editable-image-input"},render:function(){var a=this;this.$input=this.$tpl.find("input[type=hidden]:eq(0)"),this.$file=this.$tpl.find("input[type=file]:eq(0)"),this.$file.attr({name:this.name}),this.$input.attr({name:this.name+"-hidden"}),this.options.image.allowExt=this.options.image.allowExt||["jpg","jpeg","png","gif"],this.options.image.allowMime=this.options.image.allowMime||["image/jpg","image/jpeg","image/png","image/gif"],this.options.image.maxSize=a.max_size||this.options.image.maxSize||!1,this.options.image.before_remove=this.options.image.before_remove||function(){return a.$input.val(null),!0},this.$file.ace_file_input(this.options.image).on("change",function(){var b=a.$file.val()||a.$file.data("ace_input_files")?Math.random()+""+(new Date).getTime():null;a.$input.val(b)}).closest(".ace-file-input").css({width:"150px"}).closest(".editable-input").addClass("editable-image"),this.$file.off("file.error.ace").on("file.error.ace",function(b,c){a.on_error&&(c.error_count.ext>0||c.error_count.mime>0?a.on_error(1):c.error_count.size>0&&a.on_error(2))})}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'',inputclass:"",image:{style:"well",btn_choose:"Change Image",btn_change:null,no_icon:"fa fa-picture-o",thumbnail:"large"}}),a.fn.editabletypes.image=b}(window.jQuery),function(a){"use strict";var b=function(c){this.init("wysiwyg",c,b.defaults),this.options.wysiwyg=a.extend({},b.defaults.wysiwyg,c.wysiwyg)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.$editor=this.$input.nextAll(".wysiwyg-editor:eq(0)"),this.$tpl.parent().find(".wysiwyg-editor").show().ace_wysiwyg(this.options.wysiwyg).prev().addClass("wysiwyg-style2").closest(".editable-input").addClass("editable-wysiwyg").closest(".editable-container").css({display:"block"}),this.options.wysiwyg&&this.options.wysiwyg.css&&this.$tpl.closest(".editable-wysiwyg").css(this.options.wysiwyg.css)},value2html:function(b,c){return a(c).html(b),!1},html2value:function(a){return a},value2input:function(a){this.$editor.html(a)},input2value:function(){return this.$editor.html()},activate:function(){},isEmpty:function(b){return""===a.trim(b.html())?!0:""!==a.trim(b.text())?!1:!b.height()||!b.width()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'
',inputclass:"editable-wysiwyg",wysiwyg:{toolbar:["bold","italic","strikethrough","underline",null,"foreColor",null,"insertImage"]}}),a.fn.editabletypes.wysiwyg=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("spinner",a,b.defaults),this.initSpinner(a,b.defaults),this.nativeUI=!1;try{var c=document.createElement("INPUT");c.type="number",this.nativeUI="number"===c.type&&this.options.spinner.nativeUI===!0}catch(d){}};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initSpinner:function(b,c){this.options.spinner=a.extend({},c.spinner,b.spinner)},render:function(){},activate:function(){if(this.$input.is(":visible"))if(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.nativeUI){this.$input.get(0).type="number";for(var b=["min","max","step"],c=0;c',inputclass:"",spinner:{min:0,max:100,step:1,icon_up:"fa fa-plus",icon_down:"fa fa-minus",btn_up_class:"btn-success",btn_down_class:"btn-danger"}}),a.fn.editabletypes.spinner=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("slider",a,b.defaults),this.initSlider(a,b.defaults),this.nativeUI=!1;try{var c=document.createElement("INPUT");c.type="range",this.nativeUI="range"===c.type&&this.options.slider.nativeUI===!0}catch(d){}};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initSlider:function(b,c){this.options.slider=a.extend({},c.slider,b.slider)},render:function(){},activate:function(){if(this.$input.is(":visible"))if(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.nativeUI){this.$input.get(0).type="range";for(var b=["min","max","step"],c=0;c