Compare commits
2391
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
346f9868d5 | ||
|
|
8b005a7816 | ||
|
|
ecef26cdf0 | ||
|
|
be567fc68c | ||
|
|
176cdae3e5 | ||
|
|
3005b30403 | ||
|
|
f0e4f51c50 | ||
|
|
9d25d5cc73 | ||
|
|
f7f468dad6 | ||
|
|
4e1c2fdcfd | ||
|
|
556ef530fd | ||
|
|
4b61d3dc9c | ||
|
|
0332cfb428 | ||
|
|
21dd42cb71 | ||
|
|
a85148790a | ||
|
|
27a00b339b | ||
|
|
96caef8f43 | ||
|
|
4c8b0df8b0 | ||
|
|
ba88642ab8 | ||
|
|
db846c9bc2 | ||
|
|
42f31ce46e | ||
|
|
796fbcce1a | ||
|
|
e15f964f81 | ||
|
|
41234fd502 | ||
|
|
e54cdfdb13 | ||
|
|
556d6be15e | ||
|
|
b19bd263a7 | ||
|
|
163709e1c0 | ||
|
|
e6286c711d | ||
|
|
ac2d7b6289 | ||
|
|
5a3764b418 | ||
|
|
ed28cabb16 | ||
|
|
f522a6cefd | ||
|
|
923d7f5178 | ||
|
|
f8ab617e4c | ||
|
|
022d6e94e3 | ||
|
|
25b414325d | ||
|
|
15aaf04093 | ||
|
|
bd896d1530 | ||
|
|
42ff8adee8 | ||
|
|
07dc78784e | ||
|
|
e3e009fe5b | ||
|
|
893688459c | ||
|
|
0aa6120530 | ||
|
|
85aa7ea71f | ||
|
|
208a75dc16 | ||
|
|
15453d0704 | ||
|
|
c77e89ca0d | ||
|
|
45ce1220dc | ||
|
|
37740bbf41 | ||
|
|
06959db5e5 | ||
|
|
1fa0cf8d32 | ||
|
|
ea50e53718 | ||
|
|
eb6b7ce84a | ||
|
|
d8f4056f46 | ||
|
|
240085834a | ||
|
|
be735c0990 | ||
|
|
58ae76f4c8 | ||
|
|
afa08e9170 | ||
|
|
af3a60590e | ||
|
|
497d118627 | ||
|
|
bad7ed2772 | ||
|
|
74efa5c502 | ||
|
|
f014dae6af | ||
|
|
b692eccd08 | ||
|
|
613a0c00e8 | ||
|
|
2cdf00af50 | ||
|
|
3a68cf07b3 | ||
|
|
484d939cea | ||
|
|
67d224c37e | ||
|
|
0793559831 | ||
|
|
b919a09d33 | ||
|
|
90b51d5a21 | ||
|
|
4e97c6f7a2 | ||
|
|
575e03c0fc | ||
|
|
300c364545 | ||
|
|
fa13145e23 | ||
|
|
dc0281d359 | ||
|
|
bbf916f28c | ||
|
|
0cf255702e | ||
|
|
7c8c4447cb | ||
|
|
1240ce2a02 | ||
|
|
1cc9aa967f | ||
|
|
a4883f5b0e | ||
|
|
f57fc6abbc | ||
|
|
e168399908 | ||
|
|
7462e135fa | ||
|
|
ef339566a5 | ||
|
|
3d6f8c6304 | ||
|
|
5b58e2efa5 | ||
|
|
6650cd2e41 | ||
|
|
f6fbb94ecc | ||
|
|
8730ab3377 | ||
|
|
1b24b06eba | ||
|
|
e3d62397a3 | ||
|
|
105ca78639 | ||
|
|
71ca5a3947 | ||
|
|
d7fc024c04 | ||
|
|
5b89f66758 | ||
|
|
01e2702491 | ||
|
|
ebe7ac1cfc | ||
|
|
0b29589055 | ||
|
|
5fb93afb24 | ||
|
|
6cdf442aa7 | ||
|
|
5626b9e626 | ||
|
|
5b043eb6a4 | ||
|
|
d5748a7950 | ||
|
|
df067be0b9 | ||
|
|
94b146d7bd | ||
|
|
868cf6c64b | ||
|
|
59b6a9e86e | ||
|
|
622c639e44 | ||
|
|
a0c9168791 | ||
|
|
d4c1c05b3c | ||
|
|
711d8161f6 | ||
|
|
b7eaba73b5 | ||
|
|
c269b4938d | ||
|
|
71dced5790 | ||
|
|
c0aea98e03 | ||
|
|
96e1e45696 | ||
|
|
bb922f987e | ||
|
|
fefc66ebe9 | ||
|
|
307d08d898 | ||
|
|
ce2f97e738 | ||
|
|
5a675ad048 | ||
|
|
d866989bc6 | ||
|
|
0f635c6dd0 | ||
|
|
a8b2ae5862 | ||
|
|
d9f8ad9db8 | ||
|
|
877d77f28b | ||
|
|
b26b8bdb98 | ||
|
|
1cac4fc4c0 | ||
|
|
fc0c81e2ca | ||
|
|
5db3bdcef9 | ||
|
|
793183cbea | ||
|
|
a68b530a9d | ||
|
|
0ebb105387 | ||
|
|
e9019418f0 | ||
|
|
3e4e25dee6 | ||
|
|
d3e9c8d692 | ||
|
|
bd1f7adc0c | ||
|
|
099bcdaf8f | ||
|
|
b9582b0dd2 | ||
|
|
f2fe9feb3a | ||
|
|
b99f3a3053 | ||
|
|
3e3677987c | ||
|
|
0cba30a202 | ||
|
|
9c08398d87 | ||
|
|
1a30da6726 | ||
|
|
30326825f0 | ||
|
|
a90baffda6 | ||
|
|
61ce23f7f9 | ||
|
|
0dcc973b2f | ||
|
|
10d07c8974 | ||
|
|
a79abfeab8 | ||
|
|
b6a7b35555 | ||
|
|
0adfee68db | ||
|
|
d0ece51fbb | ||
|
|
5471672ee5 | ||
|
|
470672e367 | ||
|
|
03a0c67209 | ||
|
|
0660180c53 | ||
|
|
499a2ee472 | ||
|
|
8ccedb598b | ||
|
|
c3f1457fce | ||
|
|
5c3dc0c2a5 | ||
|
|
590dfe90c3 | ||
|
|
f22a013079 | ||
|
|
e72975f552 | ||
|
|
77a2e2b2d5 | ||
|
|
8c36e9444a | ||
|
|
04b2b1cafe | ||
|
|
7de089dbbb | ||
|
|
c30965055c | ||
|
|
70cdb945f5 | ||
|
|
433b4e8c44 | ||
|
|
4bfb5b63c9 | ||
|
|
fad8358096 | ||
|
|
d23c17d172 | ||
|
|
426e68693a | ||
|
|
6712f88037 | ||
|
|
c351ecc299 | ||
|
|
b06b89dd86 | ||
|
|
cc48326977 | ||
|
|
2f8b368ae8 | ||
|
|
29b13f6b9c | ||
|
|
c6db4cd545 | ||
|
|
2c00ad098c | ||
|
|
bac0d93ccb | ||
|
|
6678e87cbf | ||
|
|
adbe14fd30 | ||
|
|
9b86aaa1bd | ||
|
|
2969ed2edc | ||
|
|
41d5df60f4 | ||
|
|
cfbaf60989 | ||
|
|
4178927b6f | ||
|
|
291976893a | ||
|
|
cde55ab574 | ||
|
|
77b78d05ac | ||
|
|
1fa32554d8 | ||
|
|
f1e79699a4 | ||
|
|
c628f9237f | ||
|
|
6a83d1ce25 | ||
|
|
081d40cf82 | ||
|
|
b23004c184 | ||
|
|
bc58f48752 | ||
|
|
1ac255a556 | ||
|
|
fb3cbbd924 | ||
|
|
1b29c7e463 | ||
|
|
6003c19b32 | ||
|
|
b54bf240a0 | ||
|
|
505bbda675 | ||
|
|
26bd37af31 | ||
|
|
bf13ccdcd3 | ||
|
|
645fc877e6 | ||
|
|
6ac021ff12 | ||
|
|
5d8e2c16f5 | ||
|
|
83a3ebb583 | ||
|
|
481e23fce0 | ||
|
|
be33ca69f8 | ||
|
|
bd54681d78 | ||
|
|
f0ffd3356d | ||
|
|
8a0b248caf | ||
|
|
bc71ce73cf | ||
|
|
de93966192 | ||
|
|
a4e8221508 | ||
|
|
36c37e97e0 | ||
|
|
03993052a3 | ||
|
|
3ef5c2aa6d | ||
|
|
02d84bada0 | ||
|
|
25332f2728 | ||
|
|
70e64e261e | ||
|
|
4ed88d33b1 | ||
|
|
3414241a71 | ||
|
|
e36a46b1cb | ||
|
|
df09a5227c | ||
|
|
1b1fcebeed | ||
|
|
33d9eb4c6d | ||
|
|
347c0a1275 | ||
|
|
1320c1fa58 | ||
|
|
0ce101f038 | ||
|
|
d56a0a8789 | ||
|
|
8da0e685c8 | ||
|
|
786306e32a | ||
|
|
4e20bf1d1c | ||
|
|
06797a78a7 | ||
|
|
1f3bc6baa6 | ||
|
|
ab0442cb59 | ||
|
|
e02a836063 | ||
|
|
8dfebd055c | ||
|
|
219c7028a7 | ||
|
|
4c21da5373 | ||
|
|
b2585137a5 | ||
|
|
2d585611a5 | ||
|
|
bc2dfc5403 | ||
|
|
071271b7dd | ||
|
|
bd05d5b650 | ||
|
|
f0839ade88 | ||
|
|
0b287be006 | ||
|
|
b0e928fc27 | ||
|
|
5cd2e9712e | ||
|
|
cafde950a4 | ||
|
|
34321ad89f | ||
|
|
3c09e77fba | ||
|
|
8a899c9afe | ||
|
|
865d3c89bb | ||
|
|
a3ce526854 | ||
|
|
f5b33dbbc7 | ||
|
|
83eb58fffa | ||
|
|
5e5d2d5c91 | ||
|
|
af06fc460b | ||
|
|
f874bf564d | ||
|
|
1ab5fcb36f | ||
|
|
e30aff8ca2 | ||
|
|
b2211ac4e0 | ||
|
|
0ad9347122 | ||
|
|
d48f71fc75 | ||
|
|
11adb5ddf0 | ||
|
|
8d3a15b117 | ||
|
|
dd2afb7609 | ||
|
|
08488cae4a | ||
|
|
ef6cb065d5 | ||
|
|
2880a37595 | ||
|
|
44afd72e8c | ||
|
|
6a2804ad79 | ||
|
|
d8af8f143a | ||
|
|
c6540b4fea | ||
|
|
e1897964e8 | ||
|
|
37212c9392 | ||
|
|
a4e8edce73 | ||
|
|
9da82dd205 | ||
|
|
1c15b1fdb2 | ||
|
|
27e02f22cc | ||
|
|
08178dd3aa | ||
|
|
9dc842c6e9 | ||
|
|
b706fd468d | ||
|
|
3d2489b51a | ||
|
|
f7121e25f6 | ||
|
|
307cf5eeae | ||
|
|
a6ae77cebf | ||
|
|
3d1f16bfc2 | ||
|
|
60fdef9d3f | ||
|
|
8d90a00d0e | ||
|
|
0169861c2a | ||
|
|
0f4304dcd4 | ||
|
|
64cb898d13 | ||
|
|
d3ac47356d | ||
|
|
054e58504f | ||
|
|
66ad3cc587 | ||
|
|
386cc074e3 | ||
|
|
0b1f491d16 | ||
|
|
5ce6035192 | ||
|
|
8d322a51db | ||
|
|
46d3c2bb69 | ||
|
|
92e8c5f0ce | ||
|
|
8a458eb96a | ||
|
|
e3e98f9844 | ||
|
|
89a6d6c2ac | ||
|
|
0627466308 | ||
|
|
163fea111b | ||
|
|
b8eb56ac71 | ||
|
|
e07b64339a | ||
|
|
df0c8b3c92 | ||
|
|
d4be69d44f | ||
|
|
cd0b98ee3c | ||
|
|
d1a80241f5 | ||
|
|
4f3d3b0be8 | ||
|
|
6f16d9413c | ||
|
|
2b5f38ca52 | ||
|
|
9dec0ad916 | ||
|
|
0c5118780c | ||
|
|
6e6f58ed94 | ||
|
|
00c31597c2 | ||
|
|
91b16159b7 | ||
|
|
840ab27570 | ||
|
|
0d53277fcc | ||
|
|
0218ac969b | ||
|
|
2f62d2bc14 | ||
|
|
d46d281dcf | ||
|
|
c812e24d8f | ||
|
|
7c120ee253 | ||
|
|
acbbe2c353 | ||
|
|
5b6e15c5fd | ||
|
|
dfdbeac8e4 | ||
|
|
dcf65d47a3 | ||
|
|
75fdc5368e | ||
|
|
af1d8a3041 | ||
|
|
6b0999d09b | ||
|
|
1efad18661 | ||
|
|
4d3fe5aafa | ||
|
|
c50ee44433 | ||
|
|
83c71bec25 | ||
|
|
4c2dabe4cc | ||
|
|
cf631491e8 | ||
|
|
5b026e3c5c | ||
|
|
4d136a022c | ||
|
|
f0a8efb5ad | ||
|
|
fc94177340 | ||
|
|
3b29e17696 | ||
|
|
a64431add8 | ||
|
|
c90820e6e2 | ||
|
|
46f3709f09 | ||
|
|
8e0b908b5e | ||
|
|
a5f8aa6d17 | ||
|
|
1d821480fc | ||
|
|
eaeb97baf0 | ||
|
|
e2cc446c71 | ||
|
|
02b3fe2f25 | ||
|
|
16b1bece2b | ||
|
|
4c41486e1c | ||
|
|
da71280a8d | ||
|
|
6da30c5723 | ||
|
|
aeabb05a9d | ||
|
|
2538dc5071 | ||
|
|
c7219eeb33 | ||
|
|
c493640dae | ||
|
|
0e7edad020 | ||
|
|
b7328a56ae | ||
|
|
b34e17d69a | ||
|
|
0fec301f61 | ||
|
|
82c8441e1d | ||
|
|
e845777735 | ||
|
|
f9b592fec7 | ||
|
|
55de2d3f62 | ||
|
|
ad6cae561a | ||
|
|
6256867fa0 | ||
|
|
7f4205601d | ||
|
|
d50c409315 | ||
|
|
4ee6946828 | ||
|
|
e1df980ece | ||
|
|
be1198b4a1 | ||
|
|
976c0bee6b | ||
|
|
4fc2fc1128 | ||
|
|
d3a455b955 | ||
|
|
0b815f89d6 | ||
|
|
e6cdf1ee7c | ||
|
|
aa12604481 | ||
|
|
872e0f565a | ||
|
|
f21b15f2db | ||
|
|
9aecca4cef | ||
|
|
553f9d46ba | ||
|
|
91079d9d40 | ||
|
|
6f6360d501 | ||
|
|
5a8ca16e34 | ||
|
|
9476c54eaa | ||
|
|
edd5752de2 | ||
|
|
a560ee6f0a | ||
|
|
3c28ceb701 | ||
|
|
527a0895f5 | ||
|
|
731f1e0226 | ||
|
|
6aa6a2e119 | ||
|
|
91fac6972c | ||
|
|
9fd754f3bb | ||
|
|
a922f90046 | ||
|
|
0c206c3835 | ||
|
|
bdf6d38f5d | ||
|
|
cf0a74a9d3 | ||
|
|
2d0c19271b | ||
|
|
3858f54fc5 | ||
|
|
d58b9a211f | ||
|
|
ffde727d68 | ||
|
|
6c3b9aafc1 | ||
|
|
872755e57f | ||
|
|
07c20af53b | ||
|
|
0a4a7863f1 | ||
|
|
a5738acc85 | ||
|
|
fb308b560b | ||
|
|
6639356f88 | ||
|
|
f45e0c9c4b | ||
|
|
7648563b00 | ||
|
|
32ac719663 | ||
|
|
f07ece9dd6 | ||
|
|
4b703f2790 | ||
|
|
0e350c28c7 | ||
|
|
50387cdbf5 | ||
|
|
49fcfa61f2 | ||
|
|
cd053d6a87 | ||
|
|
74ed82f592 | ||
|
|
10f23db843 | ||
|
|
89ec5861b5 | ||
|
|
ab614e4545 | ||
|
|
6559b3ba1b | ||
|
|
b70debeffa | ||
|
|
2a386e9c8b | ||
|
|
cf3f40b578 | ||
|
|
a18500dd9b | ||
|
|
3998d10bba | ||
|
|
1372874ab4 | ||
|
|
cbce448f35 | ||
|
|
b715918998 | ||
|
|
b4605958ad | ||
|
|
40a20a55d3 | ||
|
|
835e5ccc2b | ||
|
|
85fdbbd0ba | ||
|
|
6173e6c0f4 | ||
|
|
22d28f88c9 | ||
|
|
8d759ddd0a | ||
|
|
393078fb5f | ||
|
|
3d2ce8bf49 | ||
|
|
a653cedb16 | ||
|
|
f3538fbcb7 | ||
|
|
4b44f378ee | ||
|
|
5efba2aa10 | ||
|
|
ce43221767 | ||
|
|
69654fa96d | ||
|
|
16d0509262 | ||
|
|
e1a4ed67f4 | ||
|
|
5abe949006 | ||
|
|
bbb9a01130 | ||
|
|
5c589f0b39 | ||
|
|
dd37ea1295 | ||
|
|
7535f8b34c | ||
|
|
3dcf76467e | ||
|
|
dd8c1f3ec8 | ||
|
|
327ef6a39b | ||
|
|
742b70a5f0 | ||
|
|
fbf0610ff7 | ||
|
|
a06c15f469 | ||
|
|
ef96c7d074 | ||
|
|
a437675781 | ||
|
|
af0b10db40 | ||
|
|
60b5b0bf8d | ||
|
|
88237d369d | ||
|
|
3433810ed0 | ||
|
|
863a67516e | ||
|
|
531b04b2ff | ||
|
|
603f93025f | ||
|
|
51d4c4cdc9 | ||
|
|
f69a2be045 | ||
|
|
07b49dca49 | ||
|
|
f7ea1e3b99 | ||
|
|
8ecb42206f | ||
|
|
057f89ce01 | ||
|
|
dc8472323d | ||
|
|
974747b297 | ||
|
|
6a8cc2a505 | ||
|
|
4bcdbde5bc | ||
|
|
8f2770be95 | ||
|
|
7933336c25 | ||
|
|
5e1267bc64 | ||
|
|
dc835b86e9 | ||
|
|
ca49fc368a | ||
|
|
0475359eff | ||
|
|
119228c0b4 | ||
|
|
f06adcb15d | ||
|
|
1ed27c4c94 | ||
|
|
d57880510c | ||
|
|
c24b9cc0d0 | ||
|
|
2747f10901 | ||
|
|
20202ee75e | ||
|
|
58a43f5534 | ||
|
|
c186f05dd3 | ||
|
|
f2182c195b | ||
|
|
066c6bd1cd | ||
|
|
690df52019 | ||
|
|
533ba87ef4 | ||
|
|
b8581e3cec | ||
|
|
d7a7751480 | ||
|
|
e816f7126d | ||
|
|
6315dff17b | ||
|
|
826d9fcf6a | ||
|
|
4e642fe3d3 | ||
|
|
2012bbdbc1 | ||
|
|
96e14fd6fc | ||
|
|
1449d31e34 | ||
|
|
a3a2a62819 | ||
|
|
c59019f5f7 | ||
|
|
6bf09ff6da | ||
|
|
3a76d7df3a | ||
|
|
1d516f08b3 | ||
|
|
656245ce6a | ||
|
|
91d26db055 | ||
|
|
a354d60b77 | ||
|
|
3112ac7f9a | ||
|
|
5351496d6e | ||
|
|
794f766db8 | ||
|
|
3fb5423fda | ||
|
|
260cee9b38 | ||
|
|
c4a6735d60 | ||
|
|
28ad1b6c9d | ||
|
|
f609e2b628 | ||
|
|
3ef363a01e | ||
|
|
9e68bc90c2 | ||
|
|
4a36ac6a04 | ||
|
|
d2590607c2 | ||
|
|
2bce6e4f02 | ||
|
|
53e95bfadf | ||
|
|
6450629d70 | ||
|
|
8261b85b86 | ||
|
|
1c985e227f | ||
|
|
4efb380a61 | ||
|
|
e64812da72 | ||
|
|
14bbcd0617 | ||
|
|
ca4888ecae | ||
|
|
e3251b352f | ||
|
|
a532e73b52 | ||
|
|
b11aa4e633 | ||
|
|
1c66cf83bf | ||
|
|
4cbe3354e1 | ||
|
|
1ae7ba6bbb | ||
|
|
8d28478b10 | ||
|
|
c1fb8c619f | ||
|
|
eb250f91cb | ||
|
|
4ea2b963fa | ||
|
|
372b4bbb3f | ||
|
|
7577b1a958 | ||
|
|
7590c0241a | ||
|
|
68b00733e3 | ||
|
|
0cf1c48f2a | ||
|
|
8dbaa4c175 | ||
|
|
9085ed7ab0 | ||
|
|
26c3fea611 | ||
|
|
6008cc3831 | ||
|
|
f9d71a741f | ||
|
|
6affe95aea | ||
|
|
e83fe7f8ff | ||
|
|
4926577eeb | ||
|
|
584a9ba06c | ||
|
|
c8f5f671a9 | ||
|
|
cc852e5aad | ||
|
|
1bb37ede87 | ||
|
|
8eaee091ea | ||
|
|
90340c5be8 | ||
|
|
34258475f5 | ||
|
|
445c7a0472 | ||
|
|
541710ba1e | ||
|
|
27b6caf77d | ||
|
|
460c131c1e | ||
|
|
6aff22ae35 | ||
|
|
355021ba2d | ||
|
|
946fbc0933 | ||
|
|
7bebc7da8d | ||
|
|
cd33ac3c3e | ||
|
|
32f98ac079 | ||
|
|
fad54d4627 | ||
|
|
8ac6daff95 | ||
|
|
342f20a5a6 | ||
|
|
b02bf2e596 | ||
|
|
3961ff5185 | ||
|
|
90c696776c | ||
|
|
d697d42c4e | ||
|
|
b52604cb1d | ||
|
|
ee1639bbef | ||
|
|
59b09fa084 | ||
|
|
2d1a001c0f | ||
|
|
cb6d78eccb | ||
|
|
65949cccfa | ||
|
|
2d2c4d8ae4 | ||
|
|
a22005cf8c | ||
|
|
d5c88f2bc0 | ||
|
|
a7b816dd05 | ||
|
|
c84924c23c | ||
|
|
faa37756dc | ||
|
|
61ed7b167a | ||
|
|
cd6347a23a | ||
|
|
6cc37dedd2 | ||
|
|
1496fbe0b7 | ||
|
|
738758d753 | ||
|
|
7cd40fca03 | ||
|
|
266da98a73 | ||
|
|
2a17d357a1 | ||
|
|
b081e3e011 | ||
|
|
09f885ee68 | ||
|
|
d1568a3b2c | ||
|
|
f913a86dae | ||
|
|
5c56b5aacf | ||
|
|
096b87d4e3 | ||
|
|
6e3d3584a1 | ||
|
|
b0e7221950 | ||
|
|
92458fb1b3 | ||
|
|
80541abe9f | ||
|
|
d7851e5ec9 | ||
|
|
16a50d6271 | ||
|
|
72a58827bf | ||
|
|
85b806283e | ||
|
|
15037edbde | ||
|
|
17c83f8db9 | ||
|
|
e7dcc84afc | ||
|
|
8eaa940d4e | ||
|
|
9997675b1d | ||
|
|
9ef566f11f | ||
|
|
e3c3afe809 | ||
|
|
5b14ca6b12 | ||
|
|
c4676fecda | ||
|
|
a2872ef5b7 | ||
|
|
dea12f0e5e | ||
|
|
a518a6e67d | ||
|
|
325f2c28f7 | ||
|
|
dc470402e7 | ||
|
|
a029322aae | ||
|
|
e4a9953af4 | ||
|
|
57dc70f1bc | ||
|
|
dd83874d83 | ||
|
|
1ef2b7398e | ||
|
|
a89696afbb | ||
|
|
1ac03ba6e5 | ||
|
|
7e4068a244 | ||
|
|
c31a867bde | ||
|
|
f1252fa4e2 | ||
|
|
dd52766449 | ||
|
|
8f3c778b80 | ||
|
|
9aa1b25a56 | ||
|
|
b4d7acb827 | ||
|
|
b306601c72 | ||
|
|
5310c2e7f6 | ||
|
|
859f49eb10 | ||
|
|
ccfb73c19b | ||
|
|
b35c40c5a6 | ||
|
|
288107c8bc | ||
|
|
f9b56c7de2 | ||
|
|
b48734ebfa | ||
|
|
1aa944c3e1 | ||
|
|
0399b73c73 | ||
|
|
bcbd69e1b9 | ||
|
|
14fc85db51 | ||
|
|
0c50c49555 | ||
|
|
d37c254812 | ||
|
|
9d3e83e1ba | ||
|
|
2df98c614d | ||
|
|
ef7655101f | ||
|
|
b1f33e84b9 | ||
|
|
be27328404 | ||
|
|
f33a3989ea | ||
|
|
174cef80c0 | ||
|
|
b2dc9dc113 | ||
|
|
7e161684e9 | ||
|
|
a25654a1c2 | ||
|
|
8f1fb5df6c | ||
|
|
e9393a2e8e | ||
|
|
91a4989ef3 | ||
|
|
bbc70469e5 | ||
|
|
eb4ad1af46 | ||
|
|
0a42d7381c | ||
|
|
0165cfb3ac | ||
|
|
f44d45c992 | ||
|
|
38037978a2 | ||
|
|
e909a6927b | ||
|
|
85574ed40c | ||
|
|
7e9181d935 | ||
|
|
87b3f3ed27 | ||
|
|
9ac3763bdd | ||
|
|
5b4567b9ff | ||
|
|
201080e6ff | ||
|
|
5d1d7da498 | ||
|
|
c6f831aa38 | ||
|
|
fad7af19a7 | ||
|
|
4327f9529a | ||
|
|
d100030da6 | ||
|
|
3632d2c3ef | ||
|
|
a430a1dc0c | ||
|
|
739660e6ca | ||
|
|
1a18dc23b9 | ||
|
|
55f37f856b | ||
|
|
c1df8d2ed3 | ||
|
|
6c92b2dd2e | ||
|
|
3e35dec9fa | ||
|
|
187db3d011 | ||
|
|
0116e86fcc | ||
|
|
aaa3f1aa88 | ||
|
|
84f54b4b8a | ||
|
|
8c7ec533bf | ||
|
|
9de1f95360 | ||
|
|
cdefb96a8c | ||
|
|
e25b6c9232 | ||
|
|
eae58b59c9 | ||
|
|
4afedd5c88 | ||
|
|
6e5cc7fc6c | ||
|
|
1b6c2152d3 | ||
|
|
1fc022bc60 | ||
|
|
858777606b | ||
|
|
b4fe75af95 | ||
|
|
e8d94fd116 | ||
|
|
d6ab066152 | ||
|
|
54b7cb2c88 | ||
|
|
90b2623b9d | ||
|
|
8782836d7b | ||
|
|
e3aa26a41a | ||
|
|
54b1fb739f | ||
|
|
9983b719d6 | ||
|
|
c70df7102b | ||
|
|
f335b6837b | ||
|
|
19892a00f4 | ||
|
|
c6d753080a | ||
|
|
28547b32a0 | ||
|
|
8aae688fb0 | ||
|
|
38a688f918 | ||
|
|
6f9cb12dd8 | ||
|
|
5c20d6c3f6 | ||
|
|
a09511defb | ||
|
|
189db2a051 | ||
|
|
8f9d695ca6 | ||
|
|
cfc897055b | ||
|
|
f74a7b31c3 | ||
|
|
1860e1dc43 | ||
|
|
c5e6225e7f | ||
|
|
8e985ed413 | ||
|
|
392c627925 | ||
|
|
cd9a4887fd | ||
|
|
22f856668f | ||
|
|
0f926fc701 | ||
|
|
4ab5202ef2 | ||
|
|
26c316a47a | ||
|
|
b25c2547b2 | ||
|
|
64b041ea05 | ||
|
|
0ddc8588f8 | ||
|
|
b4e274682a | ||
|
|
76ce203272 | ||
|
|
7116efd65d | ||
|
|
a9b2dcb49e | ||
|
|
e804b6afb2 | ||
|
|
772d37131d | ||
|
|
ec30c46d7e | ||
|
|
b5705e6ec3 | ||
|
|
4e0479262f | ||
|
|
9a8088495e | ||
|
|
983c5eb544 | ||
|
|
58fdbc4054 | ||
|
|
3673632089 | ||
|
|
87e61c8920 | ||
|
|
d67e7a3b4d | ||
|
|
954995b3ef | ||
|
|
f591849b8d | ||
|
|
4c44b751e3 | ||
|
|
648ad23dcf | ||
|
|
c46c8a010f | ||
|
|
832536f403 | ||
|
|
f0067a1c04 | ||
|
|
f732a4b545 | ||
|
|
38cf897ae1 | ||
|
|
8ca365da7b | ||
|
|
cbe8b4012b | ||
|
|
522f5c8a86 | ||
|
|
ac5d2268e5 | ||
|
|
3d0effb912 | ||
|
|
90b970115a | ||
|
|
0f5ba4ef5b | ||
|
|
bd428fa352 | ||
|
|
00b57b2ff9 | ||
|
|
bd69e3dcc3 | ||
|
|
275d492f39 | ||
|
|
f55f302306 | ||
|
|
650225ad00 | ||
|
|
631f5ed99c | ||
|
|
b9664dc710 | ||
|
|
bd66871b0e | ||
|
|
dccc880ef5 | ||
|
|
0ccad9df90 | ||
|
|
c75fbc5f00 | ||
|
|
e257bed6de | ||
|
|
e56a550cff | ||
|
|
3d1ced386f | ||
|
|
eb90b33485 | ||
|
|
215a7501a6 | ||
|
|
9f228b6235 | ||
|
|
72e6132895 | ||
|
|
fbe520d381 | ||
|
|
108f47c90d | ||
|
|
c65c34469a | ||
|
|
b21845440a | ||
|
|
4ce642629c | ||
|
|
68262d8abb | ||
|
|
093002db14 | ||
|
|
b85f7915f4 | ||
|
|
e70315354e | ||
|
|
0867a234c2 | ||
|
|
4e962bba09 | ||
|
|
279b0cd0c5 | ||
|
|
3dc3dc8cbe | ||
|
|
38131f26be | ||
|
|
0e38412510 | ||
|
|
848279404f | ||
|
|
6e77c8b8fc | ||
|
|
33438263ab | ||
|
|
bbe4e6d7ed | ||
|
|
69387b6444 | ||
|
|
bf7ffda252 | ||
|
|
10c2f222e1 | ||
|
|
b0a0bfa4ac | ||
|
|
b573130ab7 | ||
|
|
cd5468f55c | ||
|
|
83407e0c8d | ||
|
|
e1466fe160 | ||
|
|
94a6a26b48 | ||
|
|
f205c82d90 | ||
|
|
f9e61e7ea0 | ||
|
|
9462d32f83 | ||
|
|
da8203e64d | ||
|
|
83ebd55a15 | ||
|
|
0c3e9eb716 | ||
|
|
bc72a8f083 | ||
|
|
14a68d5806 | ||
|
|
86dc78b63a | ||
|
|
5dd0a758d4 | ||
|
|
e959b1edc2 | ||
|
|
7533f6239c | ||
|
|
71636a4ce6 | ||
|
|
72e4cf3d10 | ||
|
|
a8c849a305 | ||
|
|
ce0a941e2d | ||
|
|
af899b3ca8 | ||
|
|
742234c757 | ||
|
|
15b8140690 | ||
|
|
89cd881397 | ||
|
|
75fd905829 | ||
|
|
5d77e227e9 | ||
|
|
1da46f1615 | ||
|
|
09bcf05b04 | ||
|
|
5c590f4ad8 | ||
|
|
1feb66dc86 | ||
|
|
e83ebc2581 | ||
|
|
c97889f249 | ||
|
|
5f1a8b406a | ||
|
|
3781d43fa8 | ||
|
|
d950315e5a | ||
|
|
fae10ae979 | ||
|
|
c1cc453761 | ||
|
|
52aad2db2a | ||
|
|
777d2dae40 | ||
|
|
6c2388633c | ||
|
|
9ade8f69fd | ||
|
|
aded799b81 | ||
|
|
34bcd946e9 | ||
|
|
791db54746 | ||
|
|
5c2d9dddb0 | ||
|
|
b4d5fbcb61 | ||
|
|
7a9ea55100 | ||
|
|
b6eaf30829 | ||
|
|
ee778e6a09 | ||
|
|
df5c4cefeb | ||
|
|
de8c0b6d09 | ||
|
|
86dcf290a6 | ||
|
|
cd9bfba7c6 | ||
|
|
aa5b8740fd | ||
|
|
869a31abf0 | ||
|
|
f8fa10389a | ||
|
|
553efb890e | ||
|
|
4b276370dc | ||
|
|
2d739a956d | ||
|
|
66dbc0366c | ||
|
|
553ee02387 | ||
|
|
8e5c65f03b | ||
|
|
2bb8f969dc | ||
|
|
e46f5ea1bf | ||
|
|
6549c5d1a0 | ||
|
|
1710dc9c72 | ||
|
|
1e963ee1d8 | ||
|
|
a133dfc722 | ||
|
|
42c3c6ff46 | ||
|
|
a62cd40fc0 | ||
|
|
b0dcf14d96 | ||
|
|
780169962d | ||
|
|
99d6c8c879 | ||
|
|
ed6d19e8ab | ||
|
|
c02581978d | ||
|
|
1feb732ebc | ||
|
|
1029acab75 | ||
|
|
db00b65e3c | ||
|
|
10533dcba2 | ||
|
|
773ae2bfe3 | ||
|
|
fd4d10e6e7 | ||
|
|
14e267b4b0 | ||
|
|
60d04b1bdf | ||
|
|
bebe535d94 | ||
|
|
d7d084b57a | ||
|
|
265200b5bc | ||
|
|
3b60d9ba77 | ||
|
|
3baf761b3b | ||
|
|
6623e5cb2d | ||
|
|
13f5cb1539 | ||
|
|
6e19722742 | ||
|
|
d083dc36b2 | ||
|
|
8eb2380542 | ||
|
|
aac7391d28 | ||
|
|
691ac56723 | ||
|
|
009e310a75 | ||
|
|
90cb9d58a4 | ||
|
|
7501570cea | ||
|
|
c5486f3e77 | ||
|
|
dbf376d400 | ||
|
|
2da6108d19 | ||
|
|
4f3c2e8adc | ||
|
|
ea9a0130db | ||
|
|
ff0fd9e20f | ||
|
|
ad868f1df3 | ||
|
|
7104d983cd | ||
|
|
ff9db8ff5a | ||
|
|
231df0b15b | ||
|
|
f978e528de | ||
|
|
cc73c7c0b6 | ||
|
|
15701a4a90 | ||
|
|
f8d6204f0c | ||
|
|
c3ceef836a | ||
|
|
de44c416f6 | ||
|
|
25d2824478 | ||
|
|
62872b34c2 | ||
|
|
ddbe6f4683 | ||
|
|
d3922804eb | ||
|
|
ce8fdb1595 | ||
|
|
b000ee7745 | ||
|
|
69a7ef2318 | ||
|
|
d6e09a6738 | ||
|
|
9d642bf941 | ||
|
|
1f4d543fe1 | ||
|
|
93363ec2e3 | ||
|
|
a5ec1c886a | ||
|
|
cb4d467f8e | ||
|
|
3c9add272a | ||
|
|
73a3cacfbd | ||
|
|
6149a12180 | ||
|
|
790ef81101 | ||
|
|
5cc57110c1 | ||
|
|
d54adf7ca9 | ||
|
|
195a590de3 | ||
|
|
5f8056fad6 | ||
|
|
87bfa7f0f3 | ||
|
|
dc645ff08f | ||
|
|
c72e0d5ea3 | ||
|
|
97261e2ee9 | ||
|
|
3cbc018f25 | ||
|
|
e0c908d88f | ||
|
|
562c69307e | ||
|
|
9a6b5d8e66 | ||
|
|
8f1845b334 | ||
|
|
5703db8c2b | ||
|
|
42b59f0471 | ||
|
|
76b8f8743d | ||
|
|
a3779ff1e1 | ||
|
|
f93739c0e0 | ||
|
|
1d6bd5acf6 | ||
|
|
592903f3f8 | ||
|
|
c17f905ed2 | ||
|
|
44e1bb10c3 | ||
|
|
77248ad4d8 | ||
|
|
f25f5008f1 | ||
|
|
666da255b8 | ||
|
|
60f9d4b3a3 | ||
|
|
115c6dd178 | ||
|
|
a1142100ab | ||
|
|
6b2ebe2f0e | ||
|
|
0ec8c74015 | ||
|
|
8baa24a539 | ||
|
|
6141a6b467 | ||
|
|
02f8dd928a | ||
|
|
31baa7fa85 | ||
|
|
207758482f | ||
|
|
0293e3a40a | ||
|
|
5445be2056 | ||
|
|
ce5ad89d5e | ||
|
|
83e8cfc2cc | ||
|
|
44d9818e97 | ||
|
|
ce4bece9ed | ||
|
|
18e2323cf4 | ||
|
|
8ebd6df41a | ||
|
|
c30dd01377 | ||
|
|
e84dc0120f | ||
|
|
47ea0cd282 | ||
|
|
e928b19b47 | ||
|
|
3f42024ffd | ||
|
|
0d1c168cbe | ||
|
|
3e32904c4b | ||
|
|
1c4697c2eb | ||
|
|
0cb73199b8 | ||
|
|
8cc406260d | ||
|
|
9a6f9f0a5e | ||
|
|
ee9483a291 | ||
|
|
c8d2050c7a | ||
|
|
ef5dd47604 | ||
|
|
f7a123c10b | ||
|
|
34fb3d9cd9 | ||
|
|
d712d53020 | ||
|
|
ac6b2ef4b4 | ||
|
|
9fd1f620d3 | ||
|
|
6de1a523bc | ||
|
|
37bface3a7 | ||
|
|
3e0a8618fd | ||
|
|
5d15141ae9 | ||
|
|
908863c076 | ||
|
|
628530dcff | ||
|
|
ff36369e57 | ||
|
|
366cba2102 | ||
|
|
39ea45eb51 | ||
|
|
07a1a3b469 | ||
|
|
b888be9dad | ||
|
|
c2ed6b8b08 | ||
|
|
90de11f4c9 | ||
|
|
083f26f3c4 | ||
|
|
4283d94edc | ||
|
|
46dece1b50 | ||
|
|
15e1ba7c05 | ||
|
|
9ea1b15753 | ||
|
|
07e186bc5f | ||
|
|
1bb5525c84 | ||
|
|
b0f47d70f1 | ||
|
|
8e4ee05bc1 | ||
|
|
51b04b68de | ||
|
|
6ec86fba1c | ||
|
|
e14a4382e5 | ||
|
|
a7ef197510 | ||
|
|
12f75688ff | ||
|
|
a1fd1acb86 | ||
|
|
d521bcede7 | ||
|
|
46eaa35718 | ||
|
|
2d905f9862 | ||
|
|
6ab2f99182 | ||
|
|
324b2f524c | ||
|
|
64973e46dd | ||
|
|
1980ef8e33 | ||
|
|
3852f644b8 | ||
|
|
dc780bd5fe | ||
|
|
11057154a7 | ||
|
|
215796bcaf | ||
|
|
cc70cb44ab | ||
|
|
b9833c49d1 | ||
|
|
685461b70f | ||
|
|
227b0a08ed | ||
|
|
2c45d38a66 | ||
|
|
c2364e3508 | ||
|
|
5aea034a17 | ||
|
|
73aa2bd158 | ||
|
|
79b3e6882a | ||
|
|
8208a3c3e3 | ||
|
|
71e52e0b65 | ||
|
|
79919802c9 | ||
|
|
5ac4fcc4fc | ||
|
|
902b22afac | ||
|
|
f33c293b1d | ||
|
|
86ae97e63c | ||
|
|
116aa5a508 | ||
|
|
9b4bdc8e33 | ||
|
|
5cc2d74128 | ||
|
|
22938a9d90 | ||
|
|
38020740d8 | ||
|
|
1e5ad5ad09 | ||
|
|
9382ad5809 | ||
|
|
8357180b78 | ||
|
|
0e0ee29cb6 | ||
|
|
c347ee1974 | ||
|
|
a0bc9c996d | ||
|
|
0ff098c2dd | ||
|
|
bf651ecad2 | ||
|
|
b516b704bb | ||
|
|
7a051d2587 | ||
|
|
d9dbedfded | ||
|
|
1f0590eff5 | ||
|
|
3b0b0e1cd5 | ||
|
|
9280cc841c | ||
|
|
57591444a9 | ||
|
|
704307c062 | ||
|
|
4bde1ba9f3 | ||
|
|
4524de492d | ||
|
|
1998d80162 | ||
|
|
8fb8e6f75e | ||
|
|
2455b14cc0 | ||
|
|
ef3e94edd3 | ||
|
|
cf06d79e8d | ||
|
|
b1ad327d16 | ||
|
|
223eaf7ee8 | ||
|
|
b7ed51ed49 | ||
|
|
7805c4eee6 | ||
|
|
5176d9a97d | ||
|
|
225199f264 | ||
|
|
70703e6952 | ||
|
|
c9ff23f243 | ||
|
|
127cbf1509 | ||
|
|
3de14c7c4c | ||
|
|
41ec5f262f | ||
|
|
773d772f8e | ||
|
|
8f700af029 | ||
|
|
0360bd168c | ||
|
|
8f438f95d0 | ||
|
|
0b825f58cf | ||
|
|
5893d853aa | ||
|
|
cf7a4a82f3 | ||
|
|
3c7bee32f8 | ||
|
|
6b9157f1d4 | ||
|
|
e229b207c1 | ||
|
|
6af3c1d523 | ||
|
|
51f24748a9 | ||
|
|
3a44782b05 | ||
|
|
8d41dead5d | ||
|
|
c611e98cf7 | ||
|
|
b98df58c76 | ||
|
|
feee4b2022 | ||
|
|
0dc061611f | ||
|
|
27aa1c1973 | ||
|
|
c1bf3a773f | ||
|
|
57ba12834a | ||
|
|
16f2c9fb42 | ||
|
|
b8c28e0a89 | ||
|
|
5e2f722e1c | ||
|
|
df67c0540c | ||
|
|
f26fb3cdf8 | ||
|
|
083dcb3647 | ||
|
|
a01fa3bc54 | ||
|
|
a53a69d374 | ||
|
|
98e0a48226 | ||
|
|
2c8e33b643 | ||
|
|
224a9e5cd8 | ||
|
|
4de249efa0 | ||
|
|
cbe341ff2c | ||
|
|
a4595a6592 | ||
|
|
b1c458bdc4 | ||
|
|
3fd747febf | ||
|
|
598f12a90a | ||
|
|
bd88cbfe64 | ||
|
|
5a2c21f956 | ||
|
|
09d28eff90 | ||
|
|
d540cd0a77 | ||
|
|
4e5caa7b8b | ||
|
|
968655c9cd | ||
|
|
1470793b52 | ||
|
|
e99832e2f0 | ||
|
|
327f85fdcc | ||
|
|
3b57965f8b | ||
|
|
baf697a134 | ||
|
|
8c900e5ca0 | ||
|
|
e6c37c0d1e | ||
|
|
b116741e25 | ||
|
|
0087d5784b | ||
|
|
8f95d4b279 | ||
|
|
baba2d34dd | ||
|
|
42e8f8f610 | ||
|
|
b739bfa01e | ||
|
|
a68b9643fc | ||
|
|
8d87c9bb19 | ||
|
|
287dd241e7 | ||
|
|
287dfded0e | ||
|
|
db5892b983 | ||
|
|
7c7caf98c1 | ||
|
|
869dd8d5a8 | ||
|
|
e5a4074c03 | ||
|
|
0ee8913199 | ||
|
|
ef94478db8 | ||
|
|
bb65e2c5c1 | ||
|
|
6cd5cb7ed0 | ||
|
|
3c0bb7ca41 | ||
|
|
48d5c2c772 | ||
|
|
9e7b8bb6b2 | ||
|
|
553e0fdbe3 | ||
|
|
38bef005f7 | ||
|
|
1bc468095c | ||
|
|
23089d2288 | ||
|
|
0fe8b3f671 | ||
|
|
61c1221b5e | ||
|
|
7fe04eee5a | ||
|
|
744c24b032 | ||
|
|
00d3105aad | ||
|
|
42bb937e68 | ||
|
|
86e58437aa | ||
|
|
89a6769385 | ||
|
|
d7989ab34d | ||
|
|
d291d38b38 | ||
|
|
6722de4173 | ||
|
|
c63085be15 | ||
|
|
5a1003ad71 | ||
|
|
29c7e3696a | ||
|
|
28c3ebb5f9 | ||
|
|
573d313cc8 | ||
|
|
33c7b4c440 | ||
|
|
4abf43e0ca | ||
|
|
12529b2c41 | ||
|
|
144b0c651c | ||
|
|
a4f7514220 | ||
|
|
22edba6c43 | ||
|
|
987450d880 | ||
|
|
107263d061 | ||
|
|
f667eb1500 | ||
|
|
50d7fa684f | ||
|
|
09ae205e37 | ||
|
|
68aeafaa0b | ||
|
|
cb1ac4541b | ||
|
|
073759612a | ||
|
|
2ea726518e | ||
|
|
7e5a1d385c | ||
|
|
1a9168e824 | ||
|
|
3c247e2156 | ||
|
|
6e80561f32 | ||
|
|
fb752f6ade | ||
|
|
497f848b70 | ||
|
|
8ce33b10a3 | ||
|
|
e77d40c4c2 | ||
|
|
323cf47417 | ||
|
|
026d72d68a | ||
|
|
617ca22f2d | ||
|
|
46acfe9470 | ||
|
|
5df66ede36 | ||
|
|
9b4d512429 | ||
|
|
c48b0c17ba | ||
|
|
969306822f | ||
|
|
01d3e6c03d | ||
|
|
61da4e56c1 | ||
|
|
614cd1c96f | ||
|
|
53a3767829 | ||
|
|
5eec7f9bbc | ||
|
|
6f722f9ead | ||
|
|
4c3cc8547c | ||
|
|
2ff74a2b68 | ||
|
|
793ee2acbe | ||
|
|
7abcbcda15 | ||
|
|
674f3b95c5 | ||
|
|
42eb107ecb | ||
|
|
107f28ca93 | ||
|
|
b180fa901d | ||
|
|
72682a3dd1 | ||
|
|
549114ae1f | ||
|
|
ead0e14350 | ||
|
|
1a69ee2b2c | ||
|
|
fe32958d59 | ||
|
|
a0215586f2 | ||
|
|
d18f795202 | ||
|
|
125d33d6b7 | ||
|
|
378d2e043f | ||
|
|
1d4a2c5863 | ||
|
|
109d6300ab | ||
|
|
9483035056 | ||
|
|
f69de0db21 | ||
|
|
2fa5c1a67c | ||
|
|
cbe47aea1b | ||
|
|
f40c9199fc | ||
|
|
890ecf5846 | ||
|
|
23d4136096 | ||
|
|
97d5f68072 | ||
|
|
53cebd7d2f | ||
|
|
21d06c00aa | ||
|
|
95487bba48 | ||
|
|
a544f4349f | ||
|
|
22b57f39ef | ||
|
|
4fdcc0221d | ||
|
|
2a78622529 | ||
|
|
21d21f4261 | ||
|
|
7dd519565b | ||
|
|
2e06b28e5a | ||
|
|
85409263c8 | ||
|
|
91b5a1e44a | ||
|
|
08373b76a2 | ||
|
|
3386d2f637 | ||
|
|
c047d23c69 | ||
|
|
31ec481d46 | ||
|
|
6a1cb8c597 | ||
|
|
653d1460a3 | ||
|
|
ff5ab5ab1d | ||
|
|
af2eee17fe | ||
|
|
ae02bbcce7 | ||
|
|
7d3ec1368f | ||
|
|
3267595bc5 | ||
|
|
750788d300 | ||
|
|
ff528cbbaf | ||
|
|
210f77c46e | ||
|
|
d77ee9b638 | ||
|
|
2a5e73a48a | ||
|
|
b3fb20df58 | ||
|
|
1d7bf20f96 | ||
|
|
08ecd47cf0 | ||
|
|
c14fcf29e8 | ||
|
|
e7b526455c | ||
|
|
5c2b4f03f3 | ||
|
|
832750ec57 | ||
|
|
8149df1e34 | ||
|
|
3b60a5d3c4 | ||
|
|
14e074a64f | ||
|
|
b04f1643c9 | ||
|
|
14904a2958 | ||
|
|
d43ea9bedd | ||
|
|
d397cdf0f6 | ||
|
|
93104a21f3 | ||
|
|
d3f36f9b71 | ||
|
|
fdb46534ab | ||
|
|
ee2f6e9c13 | ||
|
|
cc9706c413 | ||
|
|
13d3db0516 | ||
|
|
2ee0ad157d | ||
|
|
2dbbf052d2 | ||
|
|
453f5681dd | ||
|
|
afeaf01fdb | ||
|
|
bbfe5c2ab0 | ||
|
|
c8422421ab | ||
|
|
477ec440bc | ||
|
|
ef40f299ef | ||
|
|
fe2a076558 | ||
|
|
b32eb07d1e | ||
|
|
723150b755 | ||
|
|
d398f903f8 | ||
|
|
44142be28e | ||
|
|
5de5a77902 | ||
|
|
5d1b39ca49 | ||
|
|
d2cce02669 | ||
|
|
05b5a33eee | ||
|
|
8f1884349a | ||
|
|
8ece1a3454 | ||
|
|
3f2cf23f47 | ||
|
|
9268ca51da | ||
|
|
5da29ba148 | ||
|
|
0c64b506c2 | ||
|
|
da5fc417c5 | ||
|
|
186df66e81 | ||
|
|
f52865ce98 | ||
|
|
9ad8d70cf7 | ||
|
|
2765e1c923 | ||
|
|
44e0067e34 | ||
|
|
066e62c0aa | ||
|
|
1a0e84e6d7 | ||
|
|
03510ee1e7 | ||
|
|
cc1b61e522 | ||
|
|
af61d13bb3 | ||
|
|
3038e9309d | ||
|
|
668206af1c | ||
|
|
a0a4e52fca | ||
|
|
3064a13450 | ||
|
|
df1221ba74 | ||
|
|
71ce5c4dcb | ||
|
|
e6e0a4bd7d | ||
|
|
bda3cac24b | ||
|
|
d7522d0dc1 | ||
|
|
ae3688577d | ||
|
|
11077b1042 | ||
|
|
396db36829 | ||
|
|
f8f09a3654 | ||
|
|
7eb6f42bee | ||
|
|
447efc2174 | ||
|
|
b809a577ff | ||
|
|
9d63453130 | ||
|
|
8dd55ae036 | ||
|
|
6250f2ab28 | ||
|
|
59583d48d7 | ||
|
|
b8daf9882b | ||
|
|
587f2754d4 | ||
|
|
b247af7af6 | ||
|
|
15facbc291 | ||
|
|
e919ddb83c | ||
|
|
9dd7d96266 | ||
|
|
7191a9273c | ||
|
|
3aefbf71a9 | ||
|
|
e5d544e583 | ||
|
|
d5a845c3e1 | ||
|
|
cbe1248e0c | ||
|
|
fec23b56eb | ||
|
|
8f3e6d8c77 | ||
|
|
1649e5115d | ||
|
|
509904b7a5 | ||
|
|
8d51b76ca2 | ||
|
|
f5c833882d | ||
|
|
9989e76ef7 | ||
|
|
53e6c69b54 | ||
|
|
9bf7b0184b | ||
|
|
ccec652adc | ||
|
|
23a5ce6874 | ||
|
|
8027d4922b | ||
|
|
6dcafc3129 | ||
|
|
c99935bf2e | ||
|
|
90d5ced632 | ||
|
|
11c9edaf98 | ||
|
|
2ac53142b5 | ||
|
|
95a0b1d77e | ||
|
|
694a68c7f8 | ||
|
|
56b26822a2 | ||
|
|
075904616a | ||
|
|
8e0d3ec4d0 | ||
|
|
ef092bfefb | ||
|
|
b16dce7343 | ||
|
|
cda257a971 | ||
|
|
89dc1c45d7 | ||
|
|
c43cdcd5de | ||
|
|
32d56503fc | ||
|
|
157a04ef76 | ||
|
|
679bf22b74 | ||
|
|
cb97c00611 | ||
|
|
b36262b167 | ||
|
|
54c9279734 | ||
|
|
ee6b45894f | ||
|
|
112adf47be | ||
|
|
ac98f51356 | ||
|
|
139f5cf7b3 | ||
|
|
4dbb58af64 | ||
|
|
8167d7b6ae | ||
|
|
f2aefb1d39 | ||
|
|
167e76897f | ||
|
|
b47f21feaf | ||
|
|
9e2f7981fb | ||
|
|
cf78a30d89 | ||
|
|
61fa82a4fe | ||
|
|
e5347e6ee3 | ||
|
|
1396f960b0 | ||
|
|
6221ee164f | ||
|
|
309d18bebc | ||
|
|
ec22926189 | ||
|
|
084c6d24e2 | ||
|
|
de96aad086 | ||
|
|
f6eae2274f | ||
|
|
c9ee477c08 | ||
|
|
18aef77c4a | ||
|
|
9a78eac0ff | ||
|
|
74f20c2a5d | ||
|
|
9106d1f39b | ||
|
|
1c56fe0f1a | ||
|
|
3dd4e06fbe | ||
|
|
d21e696892 | ||
|
|
a1556212bc | ||
|
|
0eab965933 | ||
|
|
0c82f97880 | ||
|
|
4e6b9dbdb4 | ||
|
|
1ba9526e0b | ||
|
|
568ff4b366 | ||
|
|
16a82a28ae | ||
|
|
2d56f33b60 | ||
|
|
8db39d2e6b | ||
|
|
cd31768b5e | ||
|
|
077ce1b0a7 | ||
|
|
c990aa410e | ||
|
|
6a1848e814 | ||
|
|
ff8c876274 | ||
|
|
2126a4067b | ||
|
|
a9e58df64d | ||
|
|
e038620878 | ||
|
|
4468e5fa06 | ||
|
|
59922480fa | ||
|
|
29a140cb00 | ||
|
|
0843da7a7c | ||
|
|
50edd7dfbe | ||
|
|
37bfb7d936 | ||
|
|
fc349e9865 | ||
|
|
bec8b4d1b2 | ||
|
|
3a48483700 | ||
|
|
363278089d | ||
|
|
7d426fbfa9 | ||
|
|
3f45a0dbc9 | ||
|
|
69d00d1a4d | ||
|
|
92ca904748 | ||
|
|
33034118f2 | ||
|
|
dcd0ec9f29 | ||
|
|
467d53db81 | ||
|
|
f8a890c579 | ||
|
|
881bf08aee | ||
|
|
297767a42b | ||
|
|
f81a88abbf | ||
|
|
f335c882ba | ||
|
|
27ad4b9eb9 | ||
|
|
23f71d1ec8 | ||
|
|
5c120c3fc2 | ||
|
|
db56b74475 | ||
|
|
6576bffa52 | ||
|
|
594de74a88 | ||
|
|
395d58009e | ||
|
|
48adea0d16 | ||
|
|
dce24681e2 | ||
|
|
eecac2b007 | ||
|
|
53d5b6c37f | ||
|
|
6a8196b42c | ||
|
|
9e801f9ced | ||
|
|
4955edf69c | ||
|
|
0ab6cc9b75 | ||
|
|
5f29fe3c4f | ||
|
|
a2ab0a1173 | ||
|
|
d37b9c3c26 | ||
|
|
82dbb39568 | ||
|
|
23f2f96361 | ||
|
|
dfa585467f | ||
|
|
33b914fd4b | ||
|
|
18100867c5 | ||
|
|
d4bd27cb38 | ||
|
|
d4f682dadb | ||
|
|
f8bb7aaf30 | ||
|
|
6b02384fb8 | ||
|
|
65724bcaa7 | ||
|
|
4fa9346652 | ||
|
|
bc1459f107 | ||
|
|
9f11d7ec88 | ||
|
|
369271b29f | ||
|
|
4d34009d32 | ||
|
|
0d2c469ad9 | ||
|
|
a8bf85906a | ||
|
|
99369da128 | ||
|
|
648b3772a1 | ||
|
|
db45bfd07d | ||
|
|
06d88d3fe5 | ||
|
|
177d0a2de3 | ||
|
|
1bc08930be | ||
|
|
cc853a0632 | ||
|
|
3e89b8f781 | ||
|
|
6a928cd83a | ||
|
|
358ec17c61 | ||
|
|
765991b32e | ||
|
|
1c11a22347 | ||
|
|
b74244652e | ||
|
|
b6f76562e2 | ||
|
|
fa2e3f18d6 | ||
|
|
7a5efa938b | ||
|
|
b7b755a79d | ||
|
|
29e562259d | ||
|
|
fa74b2a084 | ||
|
|
f2d2d287f5 | ||
|
|
8d701e46df | ||
|
|
3a17e1f9b2 | ||
|
|
6d0306444d | ||
|
|
02e37eaf88 | ||
|
|
17daf67662 | ||
|
|
1ee3c49011 | ||
|
|
e3af89b001 | ||
|
|
c8f5ac4d25 | ||
|
|
ba841ce1b7 | ||
|
|
5f0258022a | ||
|
|
006ab00f20 | ||
|
|
94bc074f0d | ||
|
|
a99941d7dc | ||
|
|
a763681d2e | ||
|
|
32bc143589 | ||
|
|
b422cac734 | ||
|
|
9f9a7b9c4b | ||
|
|
5416978da5 | ||
|
|
8d6c4ed713 | ||
|
|
1ddce7ac2e | ||
|
|
6d642139d1 | ||
|
|
eb845a1eb7 | ||
|
|
18d11b2c6a | ||
|
|
00bbf4eae2 | ||
|
|
3cf9d39cf2 | ||
|
|
8ee2def02a | ||
|
|
51e9de0e79 | ||
|
|
bd3e886d7e | ||
|
|
37eafa54cc | ||
|
|
ca6e97be65 | ||
|
|
22bcef1310 | ||
|
|
900f307847 | ||
|
|
5602653ba9 | ||
|
|
c209dbd90b | ||
|
|
1c87db1faf | ||
|
|
73cd675dc9 | ||
|
|
dc374df350 | ||
|
|
9485725df5 | ||
|
|
81e59d5fe4 | ||
|
|
bcc9741fbe | ||
|
|
1151572814 | ||
|
|
c648bb71f5 | ||
|
|
be7dbc0e51 | ||
|
|
10a4350cae | ||
|
|
b15f2fc49b | ||
|
|
b793b81e4d | ||
|
|
ac6be74471 | ||
|
|
4103831401 | ||
|
|
7e87b4bed3 | ||
|
|
6fc05cb587 | ||
|
|
eaa9e6d840 | ||
|
|
e5da1905c6 | ||
|
|
864b94f62a | ||
|
|
cac19cad4d | ||
|
|
7b68309301 | ||
|
|
af9cbb47ef | ||
|
|
8bb9ed8a18 | ||
|
|
0813f48fce | ||
|
|
130d079c90 | ||
|
|
caf503faa3 | ||
|
|
ae817daa8e | ||
|
|
86659896da | ||
|
|
70ae6d612c | ||
|
|
cfa2d29a4b | ||
|
|
ca22dfec3a | ||
|
|
bbfecf1b47 | ||
|
|
7f949472f7 | ||
|
|
379c75aab6 | ||
|
|
23481318a2 | ||
|
|
5ceb2ea1c9 | ||
|
|
2af4c94817 | ||
|
|
f6333ba304 | ||
|
|
1d3e29cea2 | ||
|
|
2e462f39f7 | ||
|
|
c5868b7e5a | ||
|
|
2651e81cd3 | ||
|
|
db7a2d8768 | ||
|
|
d0d17d0033 | ||
|
|
3ebfb57527 | ||
|
|
b485dddfa2 | ||
|
|
979d7e3662 | ||
|
|
5de9859a1e | ||
|
|
5b96cc9b0a | ||
|
|
7886682f7c | ||
|
|
f95ba3f61c | ||
|
|
c6cb3190cf | ||
|
|
c8c026af16 | ||
|
|
e9012adaa4 | ||
|
|
e769b70099 | ||
|
|
0bfc7d430b | ||
|
|
8a04fc058d | ||
|
|
288e6eae00 | ||
|
|
84f4a022ed | ||
|
|
76079f24c0 | ||
|
|
0c5d62a0dd | ||
|
|
13d2e91914 | ||
|
|
9f0b2c570e | ||
|
|
1d5d72967a | ||
|
|
ba8bae67ae | ||
|
|
c68de36bce | ||
|
|
6c86fcf6fa | ||
|
|
f594a84664 | ||
|
|
b89e14f78d | ||
|
|
a872d10770 | ||
|
|
390cfa6058 | ||
|
|
613e10a2cf | ||
|
|
4ce23aee6e | ||
|
|
2534e5f668 | ||
|
|
16cc281a22 | ||
|
|
5fdcffc97d | ||
|
|
55abaf0dae | ||
|
|
8ece68a3c7 | ||
|
|
0ff3817c28 | ||
|
|
12d0ec2cf6 | ||
|
|
13fab5ebe4 | ||
|
|
2cc0150bec | ||
|
|
8be7a7e67d | ||
|
|
41ef70c1e4 | ||
|
|
26991b21ce | ||
|
|
3d79f39600 | ||
|
|
be940a32f5 | ||
|
|
fb2d3d6151 | ||
|
|
5180266f01 | ||
|
|
e00e160f35 | ||
|
|
077bd3b538 | ||
|
|
8e8eda1012 | ||
|
|
40e0adfefe | ||
|
|
7ef11cb05f | ||
|
|
d05ed7a26c | ||
|
|
b39befc111 | ||
|
|
d6a81e320b | ||
|
|
4fbbb63712 | ||
|
|
8858287469 | ||
|
|
08bff5d7df | ||
|
|
3cc437a17f | ||
|
|
c71a92302a | ||
|
|
6e5faa8cc1 | ||
|
|
b6db653f41 | ||
|
|
05fcb5397e | ||
|
|
18ae2f121a | ||
|
|
3536b01981 | ||
|
|
0b2bc922bb | ||
|
|
5226ee0343 | ||
|
|
af94f87196 | ||
|
|
743c8172e8 | ||
|
|
0816d14264 | ||
|
|
dde5bcbfe1 | ||
|
|
220e98b2cc | ||
|
|
337424cb96 | ||
|
|
a5c3a2fc79 | ||
|
|
642ad6f6f4 | ||
|
|
f592eb66a3 | ||
|
|
6297314c4a | ||
|
|
37bec05857 | ||
|
|
2b3886617e | ||
|
|
8c93d35ca9 | ||
|
|
f501eea00a | ||
|
|
13f7398761 | ||
|
|
d9c2111961 | ||
|
|
5bf206c933 | ||
|
|
26a0983860 | ||
|
|
c8add882f8 | ||
|
|
77a13d0f2b | ||
|
|
0b63dba86d | ||
|
|
376abd10a7 | ||
|
|
6239486361 | ||
|
|
a949a38bdf | ||
|
|
06f1085b89 | ||
|
|
708b05a9bd | ||
|
|
bc21d78217 | ||
|
|
2217d678e4 | ||
|
|
719922c7db | ||
|
|
6db3d92e2d | ||
|
|
3f65424d99 | ||
|
|
7cfc8f0269 | ||
|
|
bf788d4f6e | ||
|
|
d76b970d85 | ||
|
|
b7ac53b7ea | ||
|
|
a379f2d441 | ||
|
|
5c9cdd0524 | ||
|
|
2e5612697f | ||
|
|
921d3d0894 | ||
|
|
b76b467436 | ||
|
|
290c302352 | ||
|
|
8de8a156b8 | ||
|
|
1953b95732 | ||
|
|
b5b161e0d3 | ||
|
|
f8ead0093d | ||
|
|
a3d27c634e | ||
|
|
00f0b97ccb | ||
|
|
c342b4dd9a | ||
|
|
04b9d47a47 | ||
|
|
7aa7b4b6dd | ||
|
|
4baac981c2 | ||
|
|
c596c2768c | ||
|
|
50e97109b9 | ||
|
|
6970ea1ccc | ||
|
|
22d31661cb | ||
|
|
a61d8bae53 | ||
|
|
4fb542d5ee | ||
|
|
9a021e5687 | ||
|
|
168d302892 | ||
|
|
c98aed68da | ||
|
|
2cb7a5174b | ||
|
|
629d63f5e2 | ||
|
|
2bd894f53f | ||
|
|
63ed05fafb | ||
|
|
935473823a | ||
|
|
89ecbe34ed | ||
|
|
731a6e9587 | ||
|
|
a02454e2b4 | ||
|
|
082c376dde | ||
|
|
98cfc8a748 | ||
|
|
e8e405648f | ||
|
|
432318226e | ||
|
|
77c3385f93 | ||
|
|
36e45ecf68 | ||
|
|
a90096ab3c | ||
|
|
414717cebf | ||
|
|
b50a2125e4 | ||
|
|
e647f8405d | ||
|
|
613b374dcb | ||
|
|
2f28d5b327 | ||
|
|
5400eb0e32 | ||
|
|
34083c1798 | ||
|
|
eeb67d5e57 | ||
|
|
4d22814b95 | ||
|
|
c0fc922597 | ||
|
|
093cd0a050 | ||
|
|
a2caf2e971 | ||
|
|
a5fcf837bb | ||
|
|
0d152fafc7 | ||
|
|
5bba050403 | ||
|
|
b0264db0e6 | ||
|
|
e0497d9481 | ||
|
|
86d4706efc | ||
|
|
cf973847ab | ||
|
|
863fd2bdb5 | ||
|
|
8cbb637690 | ||
|
|
938fd98717 | ||
|
|
3030e0d874 | ||
|
|
88e3eb1d2c | ||
|
|
174214b096 | ||
|
|
aa5bf600ef | ||
|
|
a14f6e1455 | ||
|
|
849b0b2a27 | ||
|
|
b95ff07f61 | ||
|
|
ab3dcff023 | ||
|
|
b257672717 | ||
|
|
59a220ee51 | ||
|
|
ac3784c732 | ||
|
|
fde07c539b | ||
|
|
01c0ea13b9 | ||
|
|
d1fe9ca364 | ||
|
|
69197e6bf7 | ||
|
|
2c092997ba | ||
|
|
fab148d168 | ||
|
|
38af755e56 | ||
|
|
94f30ab40a | ||
|
|
4596a16a8c | ||
|
|
f478b5a688 | ||
|
|
47634f7f4e | ||
|
|
865dd9a2c7 | ||
|
|
4d81af640a | ||
|
|
ffbd3eb38a | ||
|
|
893f063ffa | ||
|
|
d3dccd3a8e | ||
|
|
aeb5e93548 | ||
|
|
998cf86d1a | ||
|
|
4248e6ee89 | ||
|
|
eba2bb33bb | ||
|
|
3d61dad2c7 | ||
|
|
14966a88c2 | ||
|
|
a44ea2c791 | ||
|
|
7ce1b0a6be | ||
|
|
d3d3242e0b | ||
|
|
44b3c6fb51 | ||
|
|
8a374e1963 | ||
|
|
51fdc2d920 | ||
|
|
f919e6eb43 | ||
|
|
0dfd010685 | ||
|
|
558e3ab493 | ||
|
|
105ddf93e0 | ||
|
|
a15be024a6 | ||
|
|
b10cf6e461 | ||
|
|
71d2102c4c | ||
|
|
eece42480a | ||
|
|
0e9de6e1bb | ||
|
|
178e0c4840 | ||
|
|
7232b0e48e | ||
|
|
732528ce85 | ||
|
|
7b71a1cf20 | ||
|
|
f9d45e05a9 | ||
|
|
1eafc96b35 | ||
|
|
7520a21b43 | ||
|
|
0e244c52e9 | ||
|
|
8fb48127fe | ||
|
|
39ff1921ec | ||
|
|
7c470dcd24 | ||
|
|
bd44e24398 | ||
|
|
96b8b8fd07 | ||
|
|
2a461e53b1 | ||
|
|
a1102599d7 | ||
|
|
8c491201df | ||
|
|
9139582ecd | ||
|
|
262f50cdeb | ||
|
|
177b5ea7ac | ||
|
|
7b3144b76a | ||
|
|
118877534d | ||
|
|
4566f2c172 | ||
|
|
62aa4ae53d | ||
|
|
b35b231d1a | ||
|
|
d981265f12 | ||
|
|
145a6636ca | ||
|
|
8192674948 | ||
|
|
1efef1fdcd | ||
|
|
5655568070 | ||
|
|
0ac08df532 | ||
|
|
26f3f320b8 | ||
|
|
cffbfc0f04 | ||
|
|
190769569c | ||
|
|
6c28f0e213 | ||
|
|
77ada220d5 | ||
|
|
a7872d4c33 | ||
|
|
c523711577 | ||
|
|
9a5d5a75ed | ||
|
|
f8a5ce44cf | ||
|
|
49e5e3b66e | ||
|
|
b315d80838 | ||
|
|
cebc8b77bf | ||
|
|
18055ce244 | ||
|
|
bdbb81cbd7 | ||
|
|
3e5eb9cf2d | ||
|
|
338f309f47 | ||
|
|
58d4000359 | ||
|
|
fb7b6ba7e5 | ||
|
|
5956c8cb84 | ||
|
|
75619befef | ||
|
|
1596269848 | ||
|
|
7737cdd4d5 | ||
|
|
4620b93752 | ||
|
|
0d7c5d898d | ||
|
|
a6a2c77416 | ||
|
|
4b4fc84d66 | ||
|
|
4ef725106c | ||
|
|
a1988aa18c | ||
|
|
0fc7c457bf | ||
|
|
16e219a629 | ||
|
|
36cbd21101 | ||
|
|
63ea8500b6 | ||
|
|
0ae4fc1113 | ||
|
|
661275c934 | ||
|
|
e392207c5a | ||
|
|
1529913ae4 | ||
|
|
be35cac6ae | ||
|
|
9c15dbd673 | ||
|
|
1301b37901 | ||
|
|
1fe3bfd0f3 | ||
|
|
c216c6d8ae | ||
|
|
8082eb2dec | ||
|
|
c56ee45397 | ||
|
|
2873856a63 | ||
|
|
49adfc9675 | ||
|
|
476de90ca7 | ||
|
|
5e0834b0c6 | ||
|
|
fcd04032f7 | ||
|
|
27295d69c3 | ||
|
|
e8dab58dec | ||
|
|
0fec47cbff | ||
|
|
3ada2df618 | ||
|
|
b8445347d9 | ||
|
|
844d394b14 | ||
|
|
0a888b0d0e | ||
|
|
e7ed58ea2b | ||
|
|
65241b1038 | ||
|
|
43f561ce11 | ||
|
|
e74d042dcf | ||
|
|
7bab771555 | ||
|
|
fb55312056 | ||
|
|
940c615458 | ||
|
|
e4cfebb044 | ||
|
|
cf443e8531 | ||
|
|
7f8c339c0f | ||
|
|
e78dc083e3 | ||
|
|
df69ebf90e | ||
|
|
f23b87c334 | ||
|
|
73a885a79e | ||
|
|
af544ab7c9 | ||
|
|
45e3aeaed4 | ||
|
|
d7b2272a20 | ||
|
|
9460291eef | ||
|
|
37f86a7622 | ||
|
|
593ebd3d6e | ||
|
|
c9788c31d3 | ||
|
|
21744c6880 | ||
|
|
c6cc92dbdf | ||
|
|
613425855d | ||
|
|
e2ee292e47 | ||
|
|
1f6e7e06da | ||
|
|
e8b3132e18 | ||
|
|
8d6aa28af4 | ||
|
|
1548ef0aa3 | ||
|
|
d1bf893b4f | ||
|
|
2fd2a3a6eb | ||
|
|
3a4103ac60 | ||
|
|
604d85f894 | ||
|
|
86a24ae44b | ||
|
|
4f926b3746 | ||
|
|
abcf7dfc97 | ||
|
|
6464f741e4 | ||
|
|
aab4ee2f30 | ||
|
|
845a2c63c9 | ||
|
|
b380f2d804 | ||
|
|
6a32606762 | ||
|
|
de2ef2033d | ||
|
|
e9d5380eba | ||
|
|
e9e9a69cec | ||
|
|
15b9cecfc6 | ||
|
|
665a8cab31 | ||
|
|
434468ca65 | ||
|
|
44c59f2236 | ||
|
|
81d12ce928 | ||
|
|
dd778d5c3a | ||
|
|
60ef249b5e | ||
|
|
9e687a34cc | ||
|
|
7889c429d9 | ||
|
|
1da3623c03 | ||
|
|
8ed76b4bd7 | ||
|
|
568e1b2923 | ||
|
|
bc92c2e8c4 | ||
|
|
3f63440b93 | ||
|
|
fca433f447 | ||
|
|
b166f2a469 | ||
|
|
0a9537ab07 | ||
|
|
08417f6f41 | ||
|
|
632e62e5e3 | ||
|
|
2146db9600 | ||
|
|
c93fa92c7d | ||
|
|
f594d594d3 | ||
|
|
c2bd6bcce8 | ||
|
|
8d84ccd2cc | ||
|
|
52875fb7fa | ||
|
|
119cf123fe | ||
|
|
b90d61dc15 | ||
|
|
40f35f0809 | ||
|
|
b9a8202762 | ||
|
|
ef17f7ba2c | ||
|
|
81bb511c07 | ||
|
|
400d21cdc5 | ||
|
|
7a31b57667 | ||
|
|
5fdea3ce2b | ||
|
|
e11d9f0e5c | ||
|
|
1cb1ef0fea | ||
|
|
fe5a3f9d5a | ||
|
|
29bb3df160 | ||
|
|
2773bf9888 | ||
|
|
1941cdf9cc | ||
|
|
edfced294a | ||
|
|
836f6dffd0 | ||
|
|
c437f4e2c1 | ||
|
|
6787279542 | ||
|
|
f123a17fcc | ||
|
|
a4ffe4e16c | ||
|
|
a145562535 | ||
|
|
f186441900 | ||
|
|
abdcf40aad | ||
|
|
e172219c2a | ||
|
|
4521711106 | ||
|
|
f81e249a47 | ||
|
|
369aef624f | ||
|
|
3925a92d84 | ||
|
|
27d09aab61 | ||
|
|
bfcdeb069f | ||
|
|
b1b3afa073 | ||
|
|
ef79553121 | ||
|
|
4d4cb59b80 | ||
|
|
20935af299 | ||
|
|
79d1c61494 | ||
|
|
5c40b84c8c | ||
|
|
415791dddd | ||
|
|
a5be15e453 | ||
|
|
9f34b82135 | ||
|
|
3d88ecdeed | ||
|
|
3a35c84b57 | ||
|
|
69310a2b72 | ||
|
|
8a512f6f19 | ||
|
|
8dab02a5e0 | ||
|
|
7217eea23e | ||
|
|
7120bf8d3b | ||
|
|
65718024e5 | ||
|
|
ef3c2b85f7 | ||
|
|
2ca4abcf11 | ||
|
|
07d02f3abe | ||
|
|
1ad2e62287 | ||
|
|
74c8e82e02 | ||
|
|
98062c24ff | ||
|
|
26b1dbd02b | ||
|
|
720e6b8fbd | ||
|
|
52d82b141f | ||
|
|
e6595a5e77 | ||
|
|
a478200549 | ||
|
|
faf79e4331 | ||
|
|
3d28ef1386 | ||
|
|
f188bc0d09 | ||
|
|
e003cd5276 | ||
|
|
e9c965ff7f | ||
|
|
afdfcdd465 | ||
|
|
ae8ccfe3a1 | ||
|
|
1e01f2a749 | ||
|
|
66adfb99b4 | ||
|
|
f59e21d20e | ||
|
|
d54c128ad6 | ||
|
|
689b48af78 | ||
|
|
c41dbf3f4c | ||
|
|
434842c22b | ||
|
|
be65031af4 | ||
|
|
537416190e | ||
|
|
47478f3899 | ||
|
|
d76d1f913a | ||
|
|
4bc78dba1e | ||
|
|
0cca2d5bda | ||
|
|
bc33e6fe66 | ||
|
|
40547088f6 | ||
|
|
ce8ab00a37 | ||
|
|
8fbbd15dbe | ||
|
|
3a805a7fcf | ||
|
|
a2f853fb76 | ||
|
|
8de42c3b25 | ||
|
|
534684a796 | ||
|
|
971f53c7bf | ||
|
|
4abe8ae005 | ||
|
|
55d6414497 | ||
|
|
ed9ccca134 | ||
|
|
1296f0fe23 | ||
|
|
5e2d8ef1e7 | ||
|
|
1a7a41e131 | ||
|
|
10335fbf16 | ||
|
|
f1243e3d5b | ||
|
|
d5214d616c | ||
|
|
5a167b05f0 | ||
|
|
302c09c4cb | ||
|
|
c4fc6856cd | ||
|
|
f1ec28c663 | ||
|
|
2d2f177773 | ||
|
|
2504a03211 | ||
|
|
467d03d0e5 | ||
|
|
d5581eb8b8 | ||
|
|
ca18648917 | ||
|
|
0eada14ea9 | ||
|
|
adaa1592f8 | ||
|
|
5bd0db2257 | ||
|
|
3d462c9948 | ||
|
|
39450d9e89 | ||
|
|
418213dbfc | ||
|
|
83cfe9fdb5 | ||
|
|
dbf7daa17e | ||
|
|
cab159921d | ||
|
|
421765c40d | ||
|
|
e8e5c4f023 | ||
|
|
f69d90276e | ||
|
|
20aaf3a319 | ||
|
|
e693541c88 | ||
|
|
e3ae63eb4a | ||
|
|
b5bf1beffa | ||
|
|
7d8fea286a | ||
|
|
7c4fefe672 | ||
|
|
238fa407d5 | ||
|
|
811218d30c | ||
|
|
46eed584fb | ||
|
|
1a25cccc0b | ||
|
|
2a3ebae4ae | ||
|
|
4acb6304df | ||
|
|
12fabb31f3 | ||
|
|
67d89a2558 | ||
|
|
8253edcf1a | ||
|
|
342242f6e4 | ||
|
|
2a9ebeb8dc | ||
|
|
5b3dccff52 | ||
|
|
24746c8395 | ||
|
|
8df67e8243 | ||
|
|
5df3078125 | ||
|
|
792e9717b2 | ||
|
|
7b0cffcf30 | ||
|
|
3e81a4e3fe | ||
|
|
8c4dbbfb90 | ||
|
|
55a2250efc | ||
|
|
4868fa3655 | ||
|
|
5370cbd7a1 | ||
|
|
5b69890cae | ||
|
|
815f440833 | ||
|
|
79e2b5a70b | ||
|
|
77de32a64f | ||
|
|
02cd3e66d8 | ||
|
|
3503d66773 | ||
|
|
46b902a802 | ||
|
|
fc5e0de386 | ||
|
|
3d480e950a | ||
|
|
998d27bd39 | ||
|
|
9c199161fe | ||
|
|
865fe23a64 | ||
|
|
7a8cd04447 | ||
|
|
340360d024 | ||
|
|
4cbe278bec | ||
|
|
acdc74969e | ||
|
|
95ac9a215c | ||
|
|
d3f6047d3b | ||
|
|
1776cfc3a8 | ||
|
|
c703c48d0f | ||
|
|
3b77fddade | ||
|
|
e83559e971 | ||
|
|
ed243ea56c | ||
|
|
f3fb9d884c | ||
|
|
027e39a081 | ||
|
|
6a6db1a4fc | ||
|
|
3de6687f4e | ||
|
|
c50642dd95 | ||
|
|
283b4f7d00 | ||
|
|
7906ea7c2e | ||
|
|
fa7035510b | ||
|
|
472db24705 | ||
|
|
abeba9384f | ||
|
|
a7c3f50a08 | ||
|
|
b010808618 | ||
|
|
07a4517079 | ||
|
|
b5caa2d6b0 | ||
|
|
175744c545 | ||
|
|
80fe42c741 | ||
|
|
a0aed33b3c | ||
|
|
9b9a17ba65 | ||
|
|
a4731e612e | ||
|
|
bdedb488e4 | ||
|
|
14989d0088 | ||
|
|
7925434603 | ||
|
|
537ae51750 | ||
|
|
4bcf729a80 | ||
|
|
de217eb9db | ||
|
|
16ac951eae | ||
|
|
a634423266 | ||
|
|
c2ce4ab43d | ||
|
|
80c224d43b | ||
|
|
f3921d130a | ||
|
|
63c1c13cd7 | ||
|
|
229ecfc6a2 | ||
|
|
dfd5940d51 | ||
|
|
d3d3a56d58 | ||
|
|
a7001ff6a2 | ||
|
|
a4c583361c | ||
|
|
fec6ff29d7 | ||
|
|
ca1e102949 | ||
|
|
403d914193 | ||
|
|
62520fb7fe | ||
|
|
53c880e9c0 | ||
|
|
badf89c660 | ||
|
|
5d7f916ee9 | ||
|
|
1f291853d6 | ||
|
|
a45ef44d0f | ||
|
|
96239aea0b | ||
|
|
4e7d213f19 | ||
|
|
8bdfb8a814 | ||
|
|
5cd4e0528a | ||
|
|
70a3b6f65a | ||
|
|
3af73b35b8 | ||
|
|
1d640ab9ce | ||
|
|
c2c4c63542 | ||
|
|
4ebd2ba5dc | ||
|
|
60f4ad7716 | ||
|
|
47594b2cd7 | ||
|
|
7911c7473a | ||
|
|
d75aa7e8dc | ||
|
|
b6cd004117 | ||
|
|
4cd901cf8e | ||
|
|
fe4d370f60 | ||
|
|
d774d8bbd0 | ||
|
|
f0103356ba | ||
|
|
dd38d1ca23 | ||
|
|
d6d45fe9cb | ||
|
|
9e24d08ab6 | ||
|
|
f0b9a8df5f | ||
|
|
e8a23f701a | ||
|
|
46e32154d7 | ||
|
|
359da4026f | ||
|
|
76786882ff | ||
|
|
d165dbdca4 | ||
|
|
791e8b02c3 | ||
|
|
53c61fe2d0 | ||
|
|
1eb73eb005 | ||
|
|
96c79a4404 | ||
|
|
26a8dcafce | ||
|
|
bb0575a35d | ||
|
|
99e29a586e | ||
|
|
d1af971d9a | ||
|
|
dc9c586dc8 | ||
|
|
f2486e7470 | ||
|
|
5364e2008c | ||
|
|
9b4b835c08 | ||
|
|
14d9b0dd31 | ||
|
|
51b376add2 | ||
|
|
aad7ddbc04 | ||
|
|
3007f1ba97 | ||
|
|
2b712baa50 | ||
|
|
b02d5b368d | ||
|
|
0e5b321e58 | ||
|
|
100bb00739 | ||
|
|
39c774625d | ||
|
|
49606adcf9 | ||
|
|
6324563acd | ||
|
|
1b5d39afcf | ||
|
|
21740b76e6 | ||
|
|
19e979769d | ||
|
|
0f0bea61d0 | ||
|
|
97ceaf221c | ||
|
|
4d0808efea | ||
|
|
efc287a3b9 | ||
|
|
2daef4e9bc | ||
|
|
6b2b8fd3c2 | ||
|
|
3780dbb2bb | ||
|
|
517fe05567 | ||
|
|
4f279c49c8 | ||
|
|
1ed1078979 | ||
|
|
46075cf317 | ||
|
|
87bdd06037 | ||
|
|
015487b800 | ||
|
|
95f5375288 | ||
|
|
5763bd5628 | ||
|
|
181a7e6f8e | ||
|
|
cac02fc2e8 | ||
|
|
f6315a5b46 | ||
|
|
5caeef134a | ||
|
|
b5dacced35 | ||
|
|
a42387948a | ||
|
|
a76dc6436f | ||
|
|
657900feb6 | ||
|
|
27f36ca508 | ||
|
|
bcb8696384 | ||
|
|
b4e72d56c7 | ||
|
|
8bd6bc4f60 | ||
|
|
0b20c34fb3 | ||
|
|
1cdb367081 | ||
|
|
c879a81a95 | ||
|
|
3c47f8c1a4 | ||
|
|
0f4b97daf8 | ||
|
|
a086cab252 | ||
|
|
11219a0073 | ||
|
|
4a609c81ee | ||
|
|
8d495051d7 | ||
|
|
734b8a2ddb | ||
|
|
a03a7d5ae9 | ||
|
|
e40ec7664e | ||
|
|
b9a0e7f3fa | ||
|
|
1001d4bd9d | ||
|
|
b33d39d475 | ||
|
|
5357402bf1 | ||
|
|
1539321521 | ||
|
|
addc8fc404 | ||
|
|
44c0601414 | ||
|
|
33c7dc29da | ||
|
|
756b0de34b | ||
|
|
b5ee605b30 | ||
|
|
a619ca4e72 | ||
|
|
b1fe39ccb0 | ||
|
|
3b7912e2d5 | ||
|
|
86e29c4579 | ||
|
|
0762ca8e4f | ||
|
|
974edf710c | ||
|
|
1c69656d2c | ||
|
|
bf1575e92b | ||
|
|
93c8ef0259 | ||
|
|
4c5ed4ce86 | ||
|
|
2fdc8e179e | ||
|
|
f5f06dbd3e | ||
|
|
f707da3601 | ||
|
|
e74851b289 | ||
|
|
356eb8a8b5 | ||
|
|
f7b7acc1d5 | ||
|
|
64ff1439b9 | ||
|
|
6147e207a1 | ||
|
|
b534da34ad | ||
|
|
c4f5962c7e | ||
|
|
330d9650c5 | ||
|
|
8e26910343 | ||
|
|
2add3944d3 | ||
|
|
6031ec2578 | ||
|
|
69ff5393ef | ||
|
|
fba0f67181 | ||
|
|
3998bddaca | ||
|
|
4645679d47 | ||
|
|
ead76e2486 | ||
|
|
e4f53b50fd | ||
|
|
931d291e65 | ||
|
|
230df2cec0 | ||
|
|
3a33d0cbc2 | ||
|
|
61911bdd28 | ||
|
|
bed4b87a54 | ||
|
|
3a37b35cee | ||
|
|
df7d568c2e | ||
|
|
d9e5a8224d | ||
|
|
69031f6da5 | ||
|
|
6089c449bf | ||
|
|
469fea321d | ||
|
|
85b7e6ad17 | ||
|
|
b47cbcb925 | ||
|
|
39b5362442 | ||
|
|
b5ba1c4e4f | ||
|
|
0f5790c5e6 | ||
|
|
1b6820664b | ||
|
|
2a872397f6 | ||
|
|
eff9ce8a70 | ||
|
|
a602d2d6a2 | ||
|
|
d878c7add7 | ||
|
|
3023032524 | ||
|
|
903d0cc021 | ||
|
|
11973e02e8 | ||
|
|
0f342270dc | ||
|
|
bc03a2885a | ||
|
|
0020cf7364 | ||
|
|
2af3070449 | ||
|
|
4727da6acf | ||
|
|
688936fd66 | ||
|
|
8c0103f83d | ||
|
|
8628f90592 | ||
|
|
fd90bb6c9b | ||
|
|
581212b8f7 | ||
|
|
351f84c6e6 | ||
|
|
cfbb4863c4 | ||
|
|
394e486ecb | ||
|
|
26459665c6 | ||
|
|
240268c7dd | ||
|
|
3ed0a4d794 | ||
|
|
c12e7821ec | ||
|
|
1388137158 | ||
|
|
3380970f6f | ||
|
|
2f7105f518 | ||
|
|
7c4b9536cd | ||
|
|
3e4995ae84 | ||
|
|
090aeed9f9 | ||
|
|
4a7b2d04c2 | ||
|
|
5556815d46 | ||
|
|
1baa00b4ff | ||
|
|
78d5323345 | ||
|
|
83396dec59 | ||
|
|
7248e65cba |
+4
-7
@@ -5,8 +5,6 @@
|
|||||||
!.vscode/extensions.json
|
!.vscode/extensions.json
|
||||||
|
|
||||||
/node_modules
|
/node_modules
|
||||||
package-lock.json
|
|
||||||
|
|
||||||
|
|
||||||
# 체섭 ignore
|
# 체섭 ignore
|
||||||
*.log
|
*.log
|
||||||
@@ -19,10 +17,7 @@ sess_*
|
|||||||
*/logs/*/*.txt
|
*/logs/*/*.txt
|
||||||
*/logs/preserved
|
*/logs/preserved
|
||||||
err.txt
|
err.txt
|
||||||
che/.htaccess
|
|
||||||
kwe/.htaccess
|
|
||||||
pwe/.htaccess
|
|
||||||
twe/.htaccess
|
|
||||||
hwe/.htaccess
|
hwe/.htaccess
|
||||||
|
|
||||||
d_shared
|
d_shared
|
||||||
@@ -59,8 +54,10 @@ test.*
|
|||||||
/pya
|
/pya
|
||||||
/twe
|
/twe
|
||||||
|
|
||||||
|
/hwe/data
|
||||||
|
|
||||||
|
/vendor
|
||||||
phpinfo.php
|
phpinfo.php
|
||||||
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
|
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
|
|
||||||
ingame/js/*
|
ingame/js/*
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"extension": ["ts"],
|
||||||
|
"spec": "hwe/test-ts/**/*.test.ts",
|
||||||
|
"require": [
|
||||||
|
"ts-node/register",
|
||||||
|
"tsconfig-paths/register"
|
||||||
|
],
|
||||||
|
"node-option": [
|
||||||
|
"experimental-specifier-resolution=node",
|
||||||
|
"loader=ts-node/esm"
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
+1
-1
@@ -28,5 +28,5 @@
|
|||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
"josa",
|
"josa",
|
||||||
"sammo"
|
"sammo"
|
||||||
],
|
]
|
||||||
}
|
}
|
||||||
@@ -26,20 +26,20 @@ Docker를 이용한 설치도 제공하고 있습니다.
|
|||||||
|
|
||||||
## Docker를 이용한 설치
|
## Docker를 이용한 설치
|
||||||
|
|
||||||
https://storage.hided.net/gogs/devsam/docker 를 참고해 주세요.
|
https://storage.hided.net/gitea/devsam/docker 를 참고해 주세요.
|
||||||
|
|
||||||
## 수동 설치
|
## 수동 설치
|
||||||
|
|
||||||
본 게임은 <code>git</code>을 이용한 업그레이드 시스템을 구현하였으므로, <code>git</code>이 필요합니다.
|
본 게임은 <code>git</code>을 이용한 업그레이드 시스템을 구현하였으므로, <code>git</code>이 필요합니다.
|
||||||
또한 웹 서비스 데몬을 운영중인 사용자(일반적으로 <code>www-data</code>, <code>apache</code>)에게 디렉토리 권한이 주어져야합니다.
|
또한 웹 서비스 데몬을 운영중인 사용자(일반적으로 <code>www-data</code>)에게 디렉토리 권한이 주어져야합니다.
|
||||||
|
|
||||||
### 다운로드
|
### 다운로드
|
||||||
|
|
||||||
웹 데몬 user가 <code>www-data</code>인 경우 다음과 같이 입력하여 최신 배포버전과 이미지 파일을 얻을 수 있습니다.
|
웹 데몬 user가 <code>www-data</code>인 경우 다음과 같이 입력하여 최신 배포버전과 이미지 파일을 얻을 수 있습니다.
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/core.git
|
sudo -u www-data git clone https://storage.hided.net/gitea/devsam/core.git
|
||||||
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/image.git
|
sudo -u www-data git clone https://storage.hided.net/gitea/devsam/image.git
|
||||||
```
|
```
|
||||||
|
|
||||||
> 이미지는 hook/git_hook.php을 통해 동기화되며, 서버 설치 과정에 이미지 갱신 키를 지정하는 것으로 '훼' 서버 업데이트 시 동기화됩니다. 이미지 서버가 게임 서버와 별개여도 동작하나, php와 git을 지원해야합니다.
|
> 이미지는 hook/git_hook.php을 통해 동기화되며, 서버 설치 과정에 이미지 갱신 키를 지정하는 것으로 '훼' 서버 업데이트 시 동기화됩니다. 이미지 서버가 게임 서버와 별개여도 동작하나, php와 git을 지원해야합니다.
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ if (!class_exists('\\sammo\\RootDB')) {
|
|||||||
Json::dieWithReason('No DB');
|
Json::dieWithReason('No DB');
|
||||||
}
|
}
|
||||||
|
|
||||||
APIHelper::launch(dirname(__FILE__));
|
APIHelper::launch(dirname(__FILE__), $_GET['path']??null);
|
||||||
+5
-4
@@ -35,21 +35,22 @@
|
|||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"sammo\\": [
|
"sammo\\": [
|
||||||
|
"d_setting",
|
||||||
"src/sammo"
|
"src/sammo"
|
||||||
],
|
],
|
||||||
"kakao\\": [
|
"kakao\\": [
|
||||||
|
"d_setting",
|
||||||
"src/kakao"
|
"src/kakao"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"classmap": [
|
|
||||||
"d_setting/"
|
|
||||||
],
|
|
||||||
"exclude-from-classmap": [
|
"exclude-from-classmap": [
|
||||||
"**/*.orig.php"
|
"**/*.orig.php"
|
||||||
],
|
],
|
||||||
"files":[
|
"files":[
|
||||||
"f_config/config.php"
|
"f_config/config.php"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.5"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+1799
-2
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "1983b89436fd8017db508592ddf542e4",
|
"content-hash": "2b7ec5f1a1a908310f3d032f294eacec",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brandonwamboldt/utilphp",
|
"name": "brandonwamboldt/utilphp",
|
||||||
@@ -4228,7 +4228,1804 @@
|
|||||||
"time": "2019-08-07T17:19:21+00:00"
|
"time": "2019-08-07T17:19:21+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [],
|
"packages-dev": [
|
||||||
|
{
|
||||||
|
"name": "doctrine/instantiator",
|
||||||
|
"version": "1.4.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/doctrine/instantiator.git",
|
||||||
|
"reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
|
||||||
|
"reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.1 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"doctrine/coding-standard": "^8.0",
|
||||||
|
"ext-pdo": "*",
|
||||||
|
"ext-phar": "*",
|
||||||
|
"phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
|
||||||
|
"phpstan/phpstan": "^0.12",
|
||||||
|
"phpstan/phpstan-phpunit": "^0.12",
|
||||||
|
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Marco Pivetta",
|
||||||
|
"email": "ocramius@gmail.com",
|
||||||
|
"homepage": "https://ocramius.github.io/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
|
||||||
|
"homepage": "https://www.doctrine-project.org/projects/instantiator.html",
|
||||||
|
"keywords": [
|
||||||
|
"constructor",
|
||||||
|
"instantiate"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/doctrine/instantiator/issues",
|
||||||
|
"source": "https://github.com/doctrine/instantiator/tree/1.4.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://www.doctrine-project.org/sponsorship.html",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.patreon.com/phpdoctrine",
|
||||||
|
"type": "patreon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-11-10T18:47:58+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "myclabs/deep-copy",
|
||||||
|
"version": "1.10.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
|
"reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
|
||||||
|
"reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.1 || ^8.0"
|
||||||
|
},
|
||||||
|
"replace": {
|
||||||
|
"myclabs/deep-copy": "self.version"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"doctrine/collections": "^1.0",
|
||||||
|
"doctrine/common": "^2.6",
|
||||||
|
"phpunit/phpunit": "^7.1"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/DeepCopy/deep_copy.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"DeepCopy\\": "src/DeepCopy/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"description": "Create deep copies (clones) of your objects",
|
||||||
|
"keywords": [
|
||||||
|
"clone",
|
||||||
|
"copy",
|
||||||
|
"duplicate",
|
||||||
|
"object",
|
||||||
|
"object graph"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||||
|
"source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-11-13T09:40:50+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nikic/php-parser",
|
||||||
|
"version": "v4.13.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||||
|
"reference": "210577fe3cf7badcc5814d99455df46564f3c077"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
|
||||||
|
"reference": "210577fe3cf7badcc5814d99455df46564f3c077",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-tokenizer": "*",
|
||||||
|
"php": ">=7.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ircmaxell/php-yacc": "^0.0.7",
|
||||||
|
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
|
||||||
|
},
|
||||||
|
"bin": [
|
||||||
|
"bin/php-parse"
|
||||||
|
],
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "4.9-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"PhpParser\\": "lib/PhpParser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nikita Popov"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A PHP parser written in PHP",
|
||||||
|
"keywords": [
|
||||||
|
"parser",
|
||||||
|
"php"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||||
|
"source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
|
||||||
|
},
|
||||||
|
"time": "2021-11-30T19:35:32+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phar-io/manifest",
|
||||||
|
"version": "2.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/phar-io/manifest.git",
|
||||||
|
"reference": "97803eca37d319dfa7826cc2437fc020857acb53"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
|
||||||
|
"reference": "97803eca37d319dfa7826cc2437fc020857acb53",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-phar": "*",
|
||||||
|
"ext-xmlwriter": "*",
|
||||||
|
"phar-io/version": "^3.0.1",
|
||||||
|
"php": "^7.2 || ^8.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Arne Blankerts",
|
||||||
|
"email": "arne@blankerts.de",
|
||||||
|
"role": "Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sebastian Heuer",
|
||||||
|
"email": "sebastian@phpeople.de",
|
||||||
|
"role": "Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/phar-io/manifest/issues",
|
||||||
|
"source": "https://github.com/phar-io/manifest/tree/2.0.3"
|
||||||
|
},
|
||||||
|
"time": "2021-07-20T11:28:43+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phar-io/version",
|
||||||
|
"version": "3.2.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/phar-io/version.git",
|
||||||
|
"reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
|
||||||
|
"reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2 || ^8.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Arne Blankerts",
|
||||||
|
"email": "arne@blankerts.de",
|
||||||
|
"role": "Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sebastian Heuer",
|
||||||
|
"email": "sebastian@phpeople.de",
|
||||||
|
"role": "Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Library for handling version information and constraints",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/phar-io/version/issues",
|
||||||
|
"source": "https://github.com/phar-io/version/tree/3.2.1"
|
||||||
|
},
|
||||||
|
"time": "2022-02-21T01:04:05+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phpspec/prophecy",
|
||||||
|
"version": "v1.15.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/phpspec/prophecy.git",
|
||||||
|
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
|
||||||
|
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"doctrine/instantiator": "^1.2",
|
||||||
|
"php": "^7.2 || ~8.0, <8.2",
|
||||||
|
"phpdocumentor/reflection-docblock": "^5.2",
|
||||||
|
"sebastian/comparator": "^3.0 || ^4.0",
|
||||||
|
"sebastian/recursion-context": "^3.0 || ^4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpspec/phpspec": "^6.0 || ^7.0",
|
||||||
|
"phpunit/phpunit": "^8.0 || ^9.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Prophecy\\": "src/Prophecy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Konstantin Kudryashov",
|
||||||
|
"email": "ever.zet@gmail.com",
|
||||||
|
"homepage": "http://everzet.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Marcello Duarte",
|
||||||
|
"email": "marcello.duarte@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Highly opinionated mocking framework for PHP 5.3+",
|
||||||
|
"homepage": "https://github.com/phpspec/prophecy",
|
||||||
|
"keywords": [
|
||||||
|
"Double",
|
||||||
|
"Dummy",
|
||||||
|
"fake",
|
||||||
|
"mock",
|
||||||
|
"spy",
|
||||||
|
"stub"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/phpspec/prophecy/issues",
|
||||||
|
"source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
|
||||||
|
},
|
||||||
|
"time": "2021-12-08T12:19:24+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phpunit/php-code-coverage",
|
||||||
|
"version": "9.2.14",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||||
|
"reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f4d60b6afe5546421462b76cd4e633ebc364ab4",
|
||||||
|
"reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-libxml": "*",
|
||||||
|
"ext-xmlwriter": "*",
|
||||||
|
"nikic/php-parser": "^4.13.0",
|
||||||
|
"php": ">=7.3",
|
||||||
|
"phpunit/php-file-iterator": "^3.0.3",
|
||||||
|
"phpunit/php-text-template": "^2.0.2",
|
||||||
|
"sebastian/code-unit-reverse-lookup": "^2.0.2",
|
||||||
|
"sebastian/complexity": "^2.0",
|
||||||
|
"sebastian/environment": "^5.1.2",
|
||||||
|
"sebastian/lines-of-code": "^1.0.3",
|
||||||
|
"sebastian/version": "^3.0.1",
|
||||||
|
"theseer/tokenizer": "^1.2.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-pcov": "*",
|
||||||
|
"ext-xdebug": "*"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "9.2-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/php-code-coverage",
|
||||||
|
"keywords": [
|
||||||
|
"coverage",
|
||||||
|
"testing",
|
||||||
|
"xunit"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.14"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2022-02-28T12:38:02+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phpunit/php-file-iterator",
|
||||||
|
"version": "3.0.6",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
||||||
|
"reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
|
||||||
|
"reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "FilterIterator implementation that filters files based on a list of suffixes.",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
|
||||||
|
"keywords": [
|
||||||
|
"filesystem",
|
||||||
|
"iterator"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2021-12-02T12:48:52+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phpunit/php-invoker",
|
||||||
|
"version": "3.1.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/php-invoker.git",
|
||||||
|
"reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
|
||||||
|
"reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-pcntl": "*",
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-pcntl": "*"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.1-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Invoke callables with a timeout",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/php-invoker/",
|
||||||
|
"keywords": [
|
||||||
|
"process"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/php-invoker/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-09-28T05:58:55+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phpunit/php-text-template",
|
||||||
|
"version": "2.0.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/php-text-template.git",
|
||||||
|
"reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
|
||||||
|
"reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Simple template engine.",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/php-text-template/",
|
||||||
|
"keywords": [
|
||||||
|
"template"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T05:33:50+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phpunit/php-timer",
|
||||||
|
"version": "5.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
||||||
|
"reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
|
||||||
|
"reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "5.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Utility class for timing",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/php-timer/",
|
||||||
|
"keywords": [
|
||||||
|
"timer"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T13:16:10+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "phpunit/phpunit",
|
||||||
|
"version": "9.5.16",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
|
"reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
|
||||||
|
"reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"doctrine/instantiator": "^1.3.1",
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-json": "*",
|
||||||
|
"ext-libxml": "*",
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"ext-xml": "*",
|
||||||
|
"ext-xmlwriter": "*",
|
||||||
|
"myclabs/deep-copy": "^1.10.1",
|
||||||
|
"phar-io/manifest": "^2.0.3",
|
||||||
|
"phar-io/version": "^3.0.2",
|
||||||
|
"php": ">=7.3",
|
||||||
|
"phpspec/prophecy": "^1.12.1",
|
||||||
|
"phpunit/php-code-coverage": "^9.2.13",
|
||||||
|
"phpunit/php-file-iterator": "^3.0.5",
|
||||||
|
"phpunit/php-invoker": "^3.1.1",
|
||||||
|
"phpunit/php-text-template": "^2.0.3",
|
||||||
|
"phpunit/php-timer": "^5.0.2",
|
||||||
|
"sebastian/cli-parser": "^1.0.1",
|
||||||
|
"sebastian/code-unit": "^1.0.6",
|
||||||
|
"sebastian/comparator": "^4.0.5",
|
||||||
|
"sebastian/diff": "^4.0.3",
|
||||||
|
"sebastian/environment": "^5.1.3",
|
||||||
|
"sebastian/exporter": "^4.0.3",
|
||||||
|
"sebastian/global-state": "^5.0.1",
|
||||||
|
"sebastian/object-enumerator": "^4.0.3",
|
||||||
|
"sebastian/resource-operations": "^3.0.3",
|
||||||
|
"sebastian/type": "^2.3.4",
|
||||||
|
"sebastian/version": "^3.0.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-pdo": "*",
|
||||||
|
"phpspec/prophecy-phpunit": "^2.0.1"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-soap": "*",
|
||||||
|
"ext-xdebug": "*"
|
||||||
|
},
|
||||||
|
"bin": [
|
||||||
|
"phpunit"
|
||||||
|
],
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "9.5-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/Framework/Assert/Functions.php"
|
||||||
|
],
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "The PHP Unit Testing framework.",
|
||||||
|
"homepage": "https://phpunit.de/",
|
||||||
|
"keywords": [
|
||||||
|
"phpunit",
|
||||||
|
"testing",
|
||||||
|
"xunit"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.16"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://phpunit.de/sponsors.html",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2022-02-23T17:10:58+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/cli-parser",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/cli-parser.git",
|
||||||
|
"reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
|
||||||
|
"reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Library for parsing CLI options",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/cli-parser",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/cli-parser/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-09-28T06:08:49+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/code-unit",
|
||||||
|
"version": "1.0.8",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/code-unit.git",
|
||||||
|
"reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
|
||||||
|
"reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Collection of value objects that represent the PHP code units",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/code-unit",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/code-unit/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T13:08:54+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/code-unit-reverse-lookup",
|
||||||
|
"version": "2.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
|
||||||
|
"reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
|
||||||
|
"reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Looks up which function or method a line of code belongs to",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-09-28T05:30:19+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/comparator",
|
||||||
|
"version": "4.0.6",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/comparator.git",
|
||||||
|
"reference": "55f4261989e546dc112258c7a75935a81a7ce382"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
|
||||||
|
"reference": "55f4261989e546dc112258c7a75935a81a7ce382",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3",
|
||||||
|
"sebastian/diff": "^4.0",
|
||||||
|
"sebastian/exporter": "^4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "4.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jeff Welch",
|
||||||
|
"email": "whatthejeff@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Volker Dusch",
|
||||||
|
"email": "github@wallbash.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Bernhard Schussek",
|
||||||
|
"email": "bschussek@2bepublished.at"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Provides the functionality to compare PHP values for equality",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/comparator",
|
||||||
|
"keywords": [
|
||||||
|
"comparator",
|
||||||
|
"compare",
|
||||||
|
"equality"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T15:49:45+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/complexity",
|
||||||
|
"version": "2.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/complexity.git",
|
||||||
|
"reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
|
||||||
|
"reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"nikic/php-parser": "^4.7",
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Library for calculating the complexity of PHP code units",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/complexity",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/complexity/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T15:52:27+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/diff",
|
||||||
|
"version": "4.0.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/diff.git",
|
||||||
|
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
|
||||||
|
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3",
|
||||||
|
"symfony/process": "^4.2 || ^5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "4.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kore Nordmann",
|
||||||
|
"email": "mail@kore-nordmann.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Diff implementation",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/diff",
|
||||||
|
"keywords": [
|
||||||
|
"diff",
|
||||||
|
"udiff",
|
||||||
|
"unidiff",
|
||||||
|
"unified diff"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/diff/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T13:10:38+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/environment",
|
||||||
|
"version": "5.1.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/environment.git",
|
||||||
|
"reference": "388b6ced16caa751030f6a69e588299fa09200ac"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
|
||||||
|
"reference": "388b6ced16caa751030f6a69e588299fa09200ac",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-posix": "*"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "5.1-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Provides functionality to handle HHVM/PHP environments",
|
||||||
|
"homepage": "http://www.github.com/sebastianbergmann/environment",
|
||||||
|
"keywords": [
|
||||||
|
"Xdebug",
|
||||||
|
"environment",
|
||||||
|
"hhvm"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/environment/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-09-28T05:52:38+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/exporter",
|
||||||
|
"version": "4.0.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/exporter.git",
|
||||||
|
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
|
||||||
|
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3",
|
||||||
|
"sebastian/recursion-context": "^4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "4.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jeff Welch",
|
||||||
|
"email": "whatthejeff@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Volker Dusch",
|
||||||
|
"email": "github@wallbash.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Adam Harvey",
|
||||||
|
"email": "aharvey@php.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Bernhard Schussek",
|
||||||
|
"email": "bschussek@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Provides the functionality to export PHP variables for visualization",
|
||||||
|
"homepage": "https://www.github.com/sebastianbergmann/exporter",
|
||||||
|
"keywords": [
|
||||||
|
"export",
|
||||||
|
"exporter"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2021-11-11T14:18:36+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/global-state",
|
||||||
|
"version": "5.0.5",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/global-state.git",
|
||||||
|
"reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
|
||||||
|
"reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3",
|
||||||
|
"sebastian/object-reflector": "^2.0",
|
||||||
|
"sebastian/recursion-context": "^4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-dom": "*",
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-uopz": "*"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "5.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Snapshotting of global state",
|
||||||
|
"homepage": "http://www.github.com/sebastianbergmann/global-state",
|
||||||
|
"keywords": [
|
||||||
|
"global state"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/global-state/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2022-02-14T08:28:10+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/lines-of-code",
|
||||||
|
"version": "1.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
|
||||||
|
"reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
|
||||||
|
"reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"nikic/php-parser": "^4.6",
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Library for counting the lines of code in PHP source code",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/lines-of-code",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-11-28T06:42:11+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/object-enumerator",
|
||||||
|
"version": "4.0.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
|
||||||
|
"reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
|
||||||
|
"reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3",
|
||||||
|
"sebastian/object-reflector": "^2.0",
|
||||||
|
"sebastian/recursion-context": "^4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "4.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T13:12:34+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/object-reflector",
|
||||||
|
"version": "2.0.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/object-reflector.git",
|
||||||
|
"reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
|
||||||
|
"reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Allows reflection of object attributes, including inherited and non-public ones",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T13:14:26+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/recursion-context",
|
||||||
|
"version": "4.0.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/recursion-context.git",
|
||||||
|
"reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
|
||||||
|
"reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "4.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jeff Welch",
|
||||||
|
"email": "whatthejeff@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Adam Harvey",
|
||||||
|
"email": "aharvey@php.net"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Provides functionality to recursively process PHP variables",
|
||||||
|
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-10-26T13:17:30+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/resource-operations",
|
||||||
|
"version": "3.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/resource-operations.git",
|
||||||
|
"reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
|
||||||
|
"reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Provides a list of PHP built-in functions that operate on resources",
|
||||||
|
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/resource-operations/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-09-28T06:45:17+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/type",
|
||||||
|
"version": "2.3.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/type.git",
|
||||||
|
"reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
|
||||||
|
"reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.3-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Collection of value objects that represent the types of the PHP type system",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/type",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/type/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2021-06-15T12:49:02+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sebastian/version",
|
||||||
|
"version": "3.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sebastianbergmann/version.git",
|
||||||
|
"reference": "c6c1022351a901512170118436c764e473f6de8c"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
|
||||||
|
"reference": "c6c1022351a901512170118436c764e473f6de8c",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sebastian Bergmann",
|
||||||
|
"email": "sebastian@phpunit.de",
|
||||||
|
"role": "lead"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
||||||
|
"homepage": "https://github.com/sebastianbergmann/version",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/sebastianbergmann/version/issues",
|
||||||
|
"source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sebastianbergmann",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-09-28T06:39:44+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "theseer/tokenizer",
|
||||||
|
"version": "1.2.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/theseer/tokenizer.git",
|
||||||
|
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
|
||||||
|
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-tokenizer": "*",
|
||||||
|
"ext-xmlwriter": "*",
|
||||||
|
"php": "^7.2 || ^8.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Arne Blankerts",
|
||||||
|
"email": "arne@blankerts.de",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/theseer/tokenizer/issues",
|
||||||
|
"source": "https://github.com/theseer/tokenizer/tree/1.2.1"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/theseer",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2021-07-28T10:34:58+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"stability-flags": [],
|
"stability-flags": [],
|
||||||
|
|||||||
Executable → Regular
BIN
Binary file not shown.
@@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
if(!file_exists(__DIR__ . '/../vendor/autoload.php')){
|
||||||
|
http_response_code(503);
|
||||||
|
die('not_ready');
|
||||||
|
}
|
||||||
|
|
||||||
require(__DIR__ . '/../vendor/autoload.php');
|
require(__DIR__ . '/../vendor/autoload.php');
|
||||||
|
|
||||||
if (!class_exists('\\sammo\\RootDB')) {
|
if (!class_exists('\\sammo\\RootDB')) {
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ CREATE TABLE `member` (
|
|||||||
`NAME` VARCHAR(64) NOT NULL,
|
`NAME` VARCHAR(64) NOT NULL,
|
||||||
`PICTURE` VARCHAR(64) NULL DEFAULT 'default.jpg',
|
`PICTURE` VARCHAR(64) NULL DEFAULT 'default.jpg',
|
||||||
`IMGSVR` INT(1) NULL DEFAULT '0',
|
`IMGSVR` INT(1) NULL DEFAULT '0',
|
||||||
`acl` TEXT NOT NULL DEFAULT '{}' COMMENT 'json',
|
`acl` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
`penalty` TEXT NOT NULL DEFAULT '{}' COMMENT 'json',
|
`penalty` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
`GRADE` INT(1) NULL DEFAULT '1',
|
`GRADE` INT(1) NULL DEFAULT '1',
|
||||||
`REG_NUM` INT(3) NULL DEFAULT '0',
|
`REG_NUM` INT(3) NULL DEFAULT '0',
|
||||||
`REG_DATE` DATETIME NOT NULL,
|
`REG_DATE` DATETIME NOT NULL,
|
||||||
@@ -43,9 +43,12 @@ CREATE TABLE `member` (
|
|||||||
UNIQUE INDEX `ID` (`ID`),
|
UNIQUE INDEX `ID` (`ID`),
|
||||||
UNIQUE INDEX `EMAIL` (`EMAIL`),
|
UNIQUE INDEX `EMAIL` (`EMAIL`),
|
||||||
UNIQUE INDEX `kauth_id` (`oauth_id`),
|
UNIQUE INDEX `kauth_id` (`oauth_id`),
|
||||||
INDEX `delete_after` (`delete_after`)
|
INDEX `delete_after` (`delete_after`),
|
||||||
|
CONSTRAINT `json1` CHECK (json_valid(`acl`)),
|
||||||
|
CONSTRAINT `json2` CHECK (json_valid(`penalty`))
|
||||||
)
|
)
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
COLLATE='utf8mb4_general_ci'
|
||||||
|
ENGINE=Aria;
|
||||||
|
|
||||||
-- 로그인 로그 테이블
|
-- 로그인 로그 테이블
|
||||||
CREATE TABLE `member_log` (
|
CREATE TABLE `member_log` (
|
||||||
@@ -53,12 +56,14 @@ CREATE TABLE `member_log` (
|
|||||||
`member_no` INT(11) NOT NULL,
|
`member_no` INT(11) NOT NULL,
|
||||||
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
`action_type` ENUM('reg','try_login','login','logout','oauth','change_pw','make_general','access_server','delete') NOT NULL,
|
`action_type` ENUM('reg','try_login','login','logout','oauth','change_pw','make_general','access_server','delete') NOT NULL,
|
||||||
`action` TEXT NULL DEFAULT NULL COMMENT 'JSON',
|
`action` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `action` (`member_no`, `action_type`, `date`),
|
INDEX `action` (`member_no`, `action_type`, `date`),
|
||||||
INDEX `member` (`member_no`, `date`)
|
INDEX `member` (`member_no`, `date`),
|
||||||
|
CONSTRAINT `json` CHECK (json_valid(`action`))
|
||||||
)
|
)
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
COLLATE='utf8mb4_general_ci'
|
||||||
|
ENGINE=Aria;
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# KV storage
|
# KV storage
|
||||||
@@ -69,9 +74,10 @@ CREATE TABLE if not exists `storage` (
|
|||||||
`key` VARCHAR(40) NOT NULL,
|
`key` VARCHAR(40) NOT NULL,
|
||||||
`value` TEXT NOT NULL,
|
`value` TEXT NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `key` (`namespace`, `key`)
|
UNIQUE INDEX `key` (`namespace`, `key`),
|
||||||
|
CONSTRAINT `json` CHECK (json_valid(`value`))
|
||||||
)
|
)
|
||||||
COLLATE='utf8mb4_general_ci'
|
COLLATE='utf8mb4_bin'
|
||||||
ENGINE=Aria;
|
ENGINE=Aria;
|
||||||
|
|
||||||
CREATE TABLE `login_token` (
|
CREATE TABLE `login_token` (
|
||||||
@@ -86,5 +92,4 @@ CREATE TABLE `login_token` (
|
|||||||
INDEX `by_date` (`user_id`, `expire_date`)
|
INDEX `by_date` (`user_id`, `expire_date`)
|
||||||
)
|
)
|
||||||
COLLATE='utf8mb4_general_ci'
|
COLLATE='utf8mb4_general_ci'
|
||||||
ENGINE=Aria
|
ENGINE=Aria;
|
||||||
;
|
|
||||||
+1
-1
@@ -118,7 +118,7 @@ $nations = $history['nations'];
|
|||||||
var lastMonth = <?= $e_month ?>;
|
var lastMonth = <?= $e_month ?>;
|
||||||
var selectYear = <?= $year ?>;
|
var selectYear = <?= $year ?>;
|
||||||
var selectMonth = <?= $month ?>;
|
var selectMonth = <?= $month ?>;
|
||||||
var nations = <?= $nations ? $history['nations'] : '{}' ?>;
|
var nations = <?= $nations ? JSON::encode($history['nations']) : '{}' ?>;
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -5,4 +5,4 @@ namespace sammo;
|
|||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
APIHelper::launch(dirname(__FILE__));
|
APIHelper::launch(dirname(__FILE__), $_GET['path']??null);
|
||||||
+6
-2
@@ -47,7 +47,7 @@ if ($me['newmsg'] == 1 || $me['newvote'] == 1) {
|
|||||||
], 'owner=%i', $userID);
|
], 'owner=%i', $userID);
|
||||||
}
|
}
|
||||||
|
|
||||||
$plock = $db->queryFirstField('SELECT plock FROM plock LIMIT 1');
|
$plock = boolval($db->queryFirstField('SELECT plock FROM plock LIMIT 1'));
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if ($con >= 2) {
|
if ($con >= 2) {
|
||||||
@@ -123,6 +123,8 @@ if (!$otherTextInfo) {
|
|||||||
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/map.css') ?>
|
<?= WebUtil::printCSS('css/map.css') ?>
|
||||||
<?= WebUtil::printStaticValues([
|
<?= WebUtil::printStaticValues([
|
||||||
|
'serverName' => $serverName,
|
||||||
|
'serverCnt' => $serverCnt,
|
||||||
'serverNick' => DB::prefix(),
|
'serverNick' => DB::prefix(),
|
||||||
'serverID' => UniqueConst::$serverID,
|
'serverID' => UniqueConst::$serverID,
|
||||||
'maxTurn' => GameConst::$maxTurn,
|
'maxTurn' => GameConst::$maxTurn,
|
||||||
@@ -130,6 +132,8 @@ if (!$otherTextInfo) {
|
|||||||
'commandList' => getCommandTable($generalObj),
|
'commandList' => getCommandTable($generalObj),
|
||||||
'serverNow' => TimeUtil::now(false),
|
'serverNow' => TimeUtil::now(false),
|
||||||
'baseColor2' => GameConst::$basecolor2,
|
'baseColor2' => GameConst::$basecolor2,
|
||||||
|
'lastExecuted' => $gameStor->turntime,
|
||||||
|
'isLocked' => $plock,
|
||||||
]) ?>
|
]) ?>
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
||||||
</head>
|
</head>
|
||||||
@@ -177,7 +181,7 @@ if (!$otherTextInfo) {
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="s-border-t py-2 col col-6 col-md-2">
|
<div class="s-border-t py-2 col col-6 col-md-2">
|
||||||
<div style="display:inline-block;"><?= !$plock ? ("<span style='color:cyan;'>동작 시각: " . substr($gameStor->turntime, 5, 14) . "</span>") : ("<span style='color:magenta;'>동작 시각: " . substr($gameStor->turntime, 5, 14) . "</span>") ?></div>
|
<div style="display:inline-block;"><?= $plock ? ("<span style='color:magenta;'>동작 시각: " . substr($gameStor->turntime, 5, 14) . "</span>") : ("<span style='color:cyan;'>동작 시각: " . substr($gameStor->turntime, 5, 14) . "</span>") ?></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="s-border-t py-2 col col-6 col-md-2">
|
<div class="s-border-t py-2 col col-6 col-md-2">
|
||||||
<?php if ($auctionCount > 0) : ?>
|
<?php if ($auctionCount > 0) : ?>
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ function do추방(General $general, int $myOfficerLevel):?string{
|
|||||||
}
|
}
|
||||||
$general->setVar('troop', 0);
|
$general->setVar('troop', 0);
|
||||||
|
|
||||||
if($general->getNPCType() >= 2 && ($env['scenario'] < 100 || Util::randBool(0.01))) {
|
if($general->getNPCType() >= 2 && Util::randBool(GameConst::$npcBanMessageProb)) {
|
||||||
|
|
||||||
$str = Util::choiceRandom([
|
$str = Util::choiceRandom([
|
||||||
'날 버리다니... 곧 전장에서 복수해주겠다...',
|
'날 버리다니... 곧 전장에서 복수해주겠다...',
|
||||||
|
|||||||
@@ -47,6 +47,11 @@ class SetBlockScout extends \sammo\BaseAPI
|
|||||||
return "권한이 부족합니다.";
|
return "권한이 부족합니다.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$gameStor = new KVStorage($db, 'game_env');
|
||||||
|
$blockChangeScout = $gameStor->getValue('block_change_scout')??false;
|
||||||
|
if ($blockChangeScout){
|
||||||
|
return "임관 설정을 바꿀 수 없도록 설정되어 있습니다.";
|
||||||
|
}
|
||||||
|
|
||||||
$nationID = $me['nation'];
|
$nationID = $me['nation'];
|
||||||
|
|
||||||
|
|||||||
@@ -44,9 +44,13 @@ class che_보물_도기 extends \sammo\BaseItem
|
|||||||
['쌀', 'rice']
|
['쌀', 'rice']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$db->update('nation', [
|
$nationId = $general->getVar('nation');
|
||||||
|
|
||||||
|
if ($nationId != 0) {
|
||||||
|
$db->update('nation', [
|
||||||
$resKey => $db->sqleval('%b + %i', $resKey, $score)
|
$resKey => $db->sqleval('%b + %i', $resKey, $score)
|
||||||
]);
|
], 'nation=%i', $nationId);
|
||||||
|
}
|
||||||
|
|
||||||
$score = Util::round($score);
|
$score = Util::round($score);
|
||||||
$scoreText = number_format($score, 0);
|
$scoreText = number_format($score, 0);
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
<?php
|
||||||
|
namespace sammo\Command\General;
|
||||||
|
|
||||||
|
use \sammo\{
|
||||||
|
DB, Util, JosaUtil,
|
||||||
|
General,
|
||||||
|
ActionLogger,
|
||||||
|
GameConst, GameUnitConst,
|
||||||
|
LastTurn,
|
||||||
|
Command
|
||||||
|
};
|
||||||
|
|
||||||
|
use \sammo\Constraint\Constraint;
|
||||||
|
use \sammo\Constraint\ConstraintHelper;
|
||||||
|
|
||||||
|
use function sammo\tryRollbackInheritUniqueItem;
|
||||||
|
use function sammo\tryUniqueItemLottery;
|
||||||
|
|
||||||
|
class che_은퇴 extends Command\GeneralCommand{
|
||||||
|
static protected $actionName = '은퇴';
|
||||||
|
|
||||||
|
static protected $reqAge = 60;
|
||||||
|
|
||||||
|
protected function argTest():bool{
|
||||||
|
$this->arg = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function init(){
|
||||||
|
|
||||||
|
$general = $this->generalObj;
|
||||||
|
|
||||||
|
$this->setNation();
|
||||||
|
$reqAge = static::$reqAge;
|
||||||
|
|
||||||
|
$this->fullConditionConstraints=[
|
||||||
|
ConstraintHelper::ReqGeneralValue('age', '나이', '>=', $reqAge, "나이가 {$reqAge}세 이상이어야 합니다.")
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCommandDetailTitle(): string
|
||||||
|
{
|
||||||
|
$name = $this->getName();
|
||||||
|
$reqAge = static::$reqAge;
|
||||||
|
return "{$name}({$reqAge}세 이상, 2턴)";
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCost():array{
|
||||||
|
return [0, 0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPreReqTurn():int{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPostReqTurn():int{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function run():bool{
|
||||||
|
if(!$this->hasFullConditionMet()){
|
||||||
|
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||||
|
}
|
||||||
|
|
||||||
|
$db = DB::db();
|
||||||
|
|
||||||
|
$general = $this->generalObj;
|
||||||
|
$date = $general->getTurnTime($general::TURNTIME_HM);
|
||||||
|
|
||||||
|
$logger = $general->getLogger();
|
||||||
|
|
||||||
|
$general->rebirth();
|
||||||
|
$logger->pushGeneralActionLog("은퇴하였습니다. <1>$date</>");
|
||||||
|
|
||||||
|
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||||
|
tryUniqueItemLottery($general);
|
||||||
|
$general->applyDB($db);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -168,7 +168,7 @@ class che_몰수 extends Command\NationCommand
|
|||||||
);
|
);
|
||||||
$amountText = number_format($amount, 0);
|
$amountText = number_format($amount, 0);
|
||||||
|
|
||||||
if ($destGeneral->getNPCType() >= 2 && Util::randBool(0.01)) {
|
if ($destGeneral->getNPCType() >= 2 && Util::randBool(GameConst::$npcSeizureMessageProb)) {
|
||||||
$npcTexts = [
|
$npcTexts = [
|
||||||
'몰수를 하다니... 이것이 윗사람이 할 짓이란 말입니까...',
|
'몰수를 하다니... 이것이 윗사람이 할 짓이란 말입니까...',
|
||||||
'사유재산까지 몰수해가면서 이 나라가 잘 될거라 믿습니까? 정말 이해할 수가 없군요...',
|
'사유재산까지 몰수해가면서 이 나라가 잘 될거라 믿습니까? 정말 이해할 수가 없군요...',
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ class che_물자원조 extends Command\NationCommand
|
|||||||
$limit = $this->nation['level'] * GameConst::$coefAidAmount;
|
$limit = $this->nation['level'] * GameConst::$coefAidAmount;
|
||||||
|
|
||||||
if ($goldAmount > $limit || $riceAmount > $limit) {
|
if ($goldAmount > $limit || $riceAmount > $limit) {
|
||||||
$this->fullConditionConstraints[ConstraintHelper::AlwaysFail('작위 제한량 이상은 보낼 수 없습니다.')];
|
$this->fullConditionConstraints = [ConstraintHelper::AlwaysFail('작위 제한량 이상은 보낼 수 없습니다.')];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class che_천도 extends Command\NationCommand
|
|||||||
[$reqGold, $reqRice] = $this->getCost();
|
[$reqGold, $reqRice] = $this->getCost();
|
||||||
|
|
||||||
if ($this->getDistance() === null) {
|
if ($this->getDistance() === null) {
|
||||||
$this->fullConditionConstraints[ConstraintHelper::AlwaysFail('천도 대상으로 도달할 방법이 없습니다.')];
|
$this->fullConditionConstraints = [ConstraintHelper::AlwaysFail('천도 대상으로 도달할 방법이 없습니다.')];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
namespace sammo\Event\Action;
|
||||||
|
use sammo\Util;
|
||||||
|
use sammo\DB;
|
||||||
|
use sammo\KVStorage;
|
||||||
|
|
||||||
|
class BlockScoutAction extends \sammo\Event\Action{
|
||||||
|
public function __construct(private ?bool $blockChangeScout = null){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function run(array $env){
|
||||||
|
$db = DB::db();
|
||||||
|
$db->update('nation', [
|
||||||
|
'scout'=>1
|
||||||
|
], true);
|
||||||
|
if($this->blockChangeScout !== null){
|
||||||
|
$gameStor = new KVStorage($db, 'game_env');
|
||||||
|
$gameStor->setValue('block_change_scout', $this->blockChangeScout);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [__CLASS__, $db->affectedRows()];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -252,6 +252,8 @@ class RaiseInvader extends \sammo\Event\Action
|
|||||||
$logger->pushGlobalHistoryLog("<L><b>【이벤트】</b></>이민족의 기세는 그 누구도 막을 수 없을듯 합니다!");
|
$logger->pushGlobalHistoryLog("<L><b>【이벤트】</b></>이민족의 기세는 그 누구도 막을 수 없을듯 합니다!");
|
||||||
$logger->flush();
|
$logger->flush();
|
||||||
|
|
||||||
|
$gameStor->setValue('block_change_scout', false);
|
||||||
|
|
||||||
$db->update('plock', [
|
$db->update('plock', [
|
||||||
'plock' => 0
|
'plock' => 0
|
||||||
], true);
|
], true);
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
namespace sammo\Event\Action;
|
||||||
|
use sammo\Util;
|
||||||
|
use sammo\DB;
|
||||||
|
use sammo\KVStorage;
|
||||||
|
|
||||||
|
class UnblockScoutAction extends \sammo\Event\Action{
|
||||||
|
public function __construct(private ?bool $blockChangeScout = null){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function run(array $env){
|
||||||
|
$db = DB::db();
|
||||||
|
$db->update('nation', [
|
||||||
|
'scout'=>0
|
||||||
|
]);
|
||||||
|
|
||||||
|
if($this->blockChangeScout !== null){
|
||||||
|
$gameStor = new KVStorage($db, 'game_env');
|
||||||
|
$gameStor->setValue('block_change_scout', $this->blockChangeScout);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [__CLASS__, $db->affectedRows()];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -327,6 +327,7 @@ class GameConstBase
|
|||||||
'che_증여',
|
'che_증여',
|
||||||
'che_헌납',
|
'che_헌납',
|
||||||
'che_하야',
|
'che_하야',
|
||||||
|
'che_은퇴',
|
||||||
'che_거병',
|
'che_거병',
|
||||||
'che_건국',
|
'che_건국',
|
||||||
'che_선양',
|
'che_선양',
|
||||||
@@ -394,4 +395,8 @@ class GameConstBase
|
|||||||
'임', '정', '제', '조', '주', '준', '지', '찬', '책', '충', '탁', '택', '통', '패', '평', '포', '합', '해',
|
'임', '정', '제', '조', '주', '준', '지', '찬', '책', '충', '탁', '택', '통', '패', '평', '포', '합', '해',
|
||||||
'혁', '현', '화', '환', '회', '횡', '후', '훈', '휴', '흠', '흥'
|
'혁', '현', '화', '환', '회', '횡', '후', '훈', '휴', '흠', '흥'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public static $npcBanMessageProb = 0.01;
|
||||||
|
public static $npcSeizureMessageProb = 0.01;
|
||||||
|
public static $npcMessageFreqByDay = 4;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -311,16 +311,16 @@ class GameUnitConstBase{
|
|||||||
|
|
||||||
[
|
[
|
||||||
1500, self::T_SIEGE, '정란',
|
1500, self::T_SIEGE, '정란',
|
||||||
100, 100, 6, 0, 0, 15, 5,
|
100, 100, 6, 0, 0, 14, 5,
|
||||||
0, null, null, 3,
|
0, null, null, 3,
|
||||||
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>1.8],
|
[self::T_FOOTMAN=>1.25, self::T_ARCHER=>1.25, self::T_CAVALRY=>1.25, self::T_WIZARD=>1.25, self::T_CASTLE=>1.8, 1106=>1.112],
|
||||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
|
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
|
||||||
['높은 구조물 위에서 공격합니다.'],
|
['높은 구조물 위에서 공격합니다.'],
|
||||||
['che_성벽부상무효'], null
|
['che_성벽부상무효'], null
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1501, self::T_SIEGE, '충차',
|
1501, self::T_SIEGE, '충차',
|
||||||
150, 100, 6, 0, 0, 20, 5,
|
150, 100, 6, 0, 0, 18, 5,
|
||||||
1000, null, null, 3,
|
1000, null, null, 3,
|
||||||
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>2.4],
|
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>2.4],
|
||||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
|
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
|
||||||
@@ -329,16 +329,16 @@ class GameUnitConstBase{
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
1502, self::T_SIEGE, '벽력거',
|
1502, self::T_SIEGE, '벽력거',
|
||||||
200, 100, 6, 10, 0, 25, 5,
|
200, 100, 6, 10, 0, 18, 5,
|
||||||
3000, ['업'], null, 0,
|
3000, ['업'], null, 0,
|
||||||
[self::T_FOOTMAN=>1.25, self::T_ARCHER=>1.25, self::T_CAVALRY=>1.25, self::T_WIZARD=>1.25, self::T_CASTLE=>1.8],
|
[self::T_FOOTMAN=>1.25, self::T_ARCHER=>1.25, self::T_CAVALRY=>1.25, self::T_WIZARD=>1.25, self::T_CASTLE=>1.8, 1106=>1.112],
|
||||||
[self::T_FOOTMAN=>0.833, self::T_ARCHER=>0.833, self::T_CAVALRY=>0.833, self::T_WIZARD=>0.833],
|
[self::T_FOOTMAN=>0.833, self::T_ARCHER=>0.833, self::T_CAVALRY=>0.833, self::T_WIZARD=>0.833, 1106=>0.909],
|
||||||
['상대에게 돌덩이를 날립니다.'],
|
['상대에게 돌덩이를 날립니다.'],
|
||||||
['che_성벽부상무효'], null
|
['che_성벽부상무효'], null
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1503, self::T_SIEGE, '목우',
|
1503, self::T_SIEGE, '목우',
|
||||||
50, 200, 5, 0, 0, 30, 5,
|
50, 200, 5, 0, 0, 18, 5,
|
||||||
3000, ['성도'], null, 0,
|
3000, ['성도'], null, 0,
|
||||||
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8],
|
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8],
|
||||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
|
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
|
||||||
|
|||||||
@@ -2004,6 +2004,7 @@ class GeneralAI
|
|||||||
|
|
||||||
//수도와 연결된 도시 탐색
|
//수도와 연결된 도시 탐색
|
||||||
while (!$queue->isEmpty()) {
|
while (!$queue->isEmpty()) {
|
||||||
|
/** @var int */
|
||||||
$cityID = $queue->dequeue();
|
$cityID = $queue->dequeue();
|
||||||
|
|
||||||
foreach (array_keys(CityConst::byID($cityID)->path) as $nextCityID) {
|
foreach (array_keys(CityConst::byID($cityID)->path) as $nextCityID) {
|
||||||
@@ -2377,6 +2378,9 @@ class GeneralAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
$tryBuying = false;
|
$tryBuying = false;
|
||||||
|
if ($general->getNPCType() < 2 && $relGold >= $goldCost * 3 && $relRice >= $riceCost * 3){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if ($this->generalPolicy->can상인무시) {
|
if ($this->generalPolicy->can상인무시) {
|
||||||
if ($relRice * 1.5 < $relGold && $relRice < $riceCost * 2) {
|
if ($relRice * 1.5 < $relGold && $relRice < $riceCost * 2) {
|
||||||
$tryBuying = true;
|
$tryBuying = true;
|
||||||
@@ -3643,9 +3647,9 @@ class GeneralAI
|
|||||||
$npcType = $general->getNPCType();
|
$npcType = $general->getNPCType();
|
||||||
$nationID = $general->getNationID();
|
$nationID = $general->getNationID();
|
||||||
|
|
||||||
//특별 메세지 있는 경우 출력 하루 4번
|
//특별 메세지 있는 경우 출력
|
||||||
$term = $this->env['turnterm'];
|
$term = $this->env['turnterm'];
|
||||||
if ($general->getVar('npcmsg') && Util::randBool($term / (6 * 60))) {
|
if ($general->getVar('npcmsg') && Util::randBool(GameConst::$npcMessageFreqByDay * $term / (60 * 24))) {
|
||||||
$src = new MessageTarget(
|
$src = new MessageTarget(
|
||||||
$general->getID(),
|
$general->getID(),
|
||||||
$general->getVar('name'),
|
$general->getVar('name'),
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
"history":[
|
"history":[
|
||||||
],
|
],
|
||||||
"const": {
|
"const": {
|
||||||
"joinRuinedNPCProp":0
|
"joinRuinedNPCProp":0,
|
||||||
|
"npcBanMessageProb":1
|
||||||
},
|
},
|
||||||
"events":[
|
"events":[
|
||||||
[
|
[
|
||||||
@@ -34,6 +35,15 @@
|
|||||||
],
|
],
|
||||||
["OpenNationBetting", 1, 1000],
|
["OpenNationBetting", 1, 1000],
|
||||||
["DeleteEvent"]
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,8 @@
|
|||||||
"history":[
|
"history":[
|
||||||
],
|
],
|
||||||
"const": {
|
"const": {
|
||||||
"joinRuinedNPCProp":0
|
"joinRuinedNPCProp":0,
|
||||||
|
"npcBanMessageProb":1
|
||||||
},
|
},
|
||||||
"events":[
|
"events":[
|
||||||
[
|
[
|
||||||
@@ -37,6 +38,15 @@
|
|||||||
],
|
],
|
||||||
["OpenNationBetting", 1, 1000],
|
["OpenNationBetting", 1, 1000],
|
||||||
["DeleteEvent"]
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -727,6 +727,14 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -873,6 +873,14 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -798,6 +798,14 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -775,6 +775,14 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -750,6 +750,15 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -756,6 +756,15 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -763,6 +763,15 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -749,6 +749,15 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -741,6 +741,15 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -744,6 +744,15 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -741,6 +741,14 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -763,6 +763,14 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,8 @@
|
|||||||
"expandCityDevelIncreaseAmount": 1350,
|
"expandCityDevelIncreaseAmount": 1350,
|
||||||
"expandCityWallIncreaseAmount": 1600,
|
"expandCityWallIncreaseAmount": 1600,
|
||||||
"defaultMaxGeneral":300,
|
"defaultMaxGeneral":300,
|
||||||
"joinRuinedNPCProp":0
|
"joinRuinedNPCProp":0,
|
||||||
|
"npcBanMessageProb":1
|
||||||
},
|
},
|
||||||
"events":[
|
"events":[
|
||||||
[
|
[
|
||||||
@@ -41,6 +42,15 @@
|
|||||||
],
|
],
|
||||||
["OpenNationBetting", 1, 1000],
|
["OpenNationBetting", 1, 1000],
|
||||||
["DeleteEvent"]
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -701,6 +701,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -709,6 +709,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -712,6 +712,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -711,6 +711,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -109,6 +109,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -702,6 +702,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -110,6 +110,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -268,6 +268,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -265,6 +265,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -420,6 +420,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -251,6 +251,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -707,6 +707,14 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -710,6 +710,15 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -713,6 +713,15 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -380,6 +380,15 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -711,6 +711,15 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -715,6 +715,15 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -272,5 +272,14 @@
|
|||||||
"initialActions":[
|
"initialActions":[
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -289,5 +289,14 @@
|
|||||||
"initialActions":[
|
"initialActions":[
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -394,6 +394,15 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -333,6 +333,15 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -388,6 +388,15 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -768,5 +768,20 @@
|
|||||||
[0, "플랑크톤", null, 0, null, 60, 33, 81, 0, 160, 300, null, "발명"],
|
[0, "플랑크톤", null, 0, null, 60, 33, 81, 0, 160, 300, null, "발명"],
|
||||||
[0, "퐁퐁부인", null, 0, null, 71, 47, 84, 0, 160, 300, null, null],
|
[0, "퐁퐁부인", null, 0, null, 71, 47, 84, 0, 160, 300, null, null],
|
||||||
[0, "사이타마", null, 0, null, 83, 105, 74, 0, 160, 300, null, "무쌍", "압도적인 힘이라는 건 참 시시한 거야."]
|
[0, "사이타마", null, 0, null, 83, 105, 74, 0, 160, 300, null, "무쌍", "압도적인 힘이라는 건 참 시시한 거야."]
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -598,5 +598,20 @@
|
|||||||
[999, "프란체스카", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
[999, "프란체스카", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||||
[999, "하모니트", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
[999, "하모니트", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||||
[999, "후지와라", null, 0, null, 1, 1, 1, 0, -15, 300, null, null]
|
[999, "후지와라", null, 0, null, 1, 1, 1, 0, -15, 300, null, null]
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -786,5 +786,20 @@
|
|||||||
[0, "장선", null, 0, null, 72, 71, 48, 0, 160, 300, null, null],
|
[0, "장선", null, 0, null, 72, 71, 48, 0, 160, 300, null, null],
|
||||||
[0, "뇌서", null, 0, null, 76, 74, 61, 0, 160, 300, null, null],
|
[0, "뇌서", null, 0, null, 76, 74, 61, 0, 160, 300, null, null],
|
||||||
[0, "번궁", null, 0, null, 71, 67, 58, 0, 160, 300, null, null]
|
[0, "번궁", null, 0, null, 71, 67, 58, 0, 160, 300, null, null]
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -661,5 +661,20 @@
|
|||||||
],
|
],
|
||||||
"general_ex":[
|
"general_ex":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -661,5 +661,20 @@
|
|||||||
],
|
],
|
||||||
"general_ex":[
|
"general_ex":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -505,5 +505,20 @@
|
|||||||
],
|
],
|
||||||
"general_ex":[
|
"general_ex":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -224,5 +224,20 @@
|
|||||||
[0, "국화", null, 0, "석영고원", 83, 87, 88, 0, 1973, 2100, null, "환술"],
|
[0, "국화", null, 0, "석영고원", 83, 87, 88, 0, 1973, 2100, null, "환술"],
|
||||||
[0, "목호", null, 0, "석영고원", 94, 73, 94, 0, 1973, 2100, null, null],
|
[0, "목호", null, 0, "석영고원", 94, 73, 94, 0, 1973, 2100, null, null],
|
||||||
[0, "로켓단", null, 0, null, 85, 85, 85, 0, 1973, 2100, null, null, "우리가 그렇게 궁금하시다면 대답해 드리는게 인지상정\n이 세계의 파괴를 막기 위해! 이 세계의 평화를 지키기 위해! \n사랑과 진실, 어둠을 뿌리고 다니는...! \n포켓몬의 감초 귀"]
|
[0, "로켓단", null, 0, null, 85, 85, 85, 0, 1973, 2100, null, null, "우리가 그렇게 궁금하시다면 대답해 드리는게 인지상정\n이 세계의 파괴를 막기 위해! 이 세계의 평화를 지키기 위해! \n사랑과 진실, 어둠을 뿌리고 다니는...! \n포켓몬의 감초 귀"]
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -659,5 +659,20 @@
|
|||||||
],
|
],
|
||||||
"general_ex":[
|
"general_ex":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -841,6 +841,15 @@
|
|||||||
"trade":100
|
"trade":100
|
||||||
}],
|
}],
|
||||||
["DeleteEvent"]
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -109,6 +109,15 @@
|
|||||||
["Date", "==", 181, 1],
|
["Date", "==", 181, 1],
|
||||||
["RaiseNPCNation"],
|
["RaiseNPCNation"],
|
||||||
["DeleteEvent"]
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,692 @@
|
|||||||
|
{
|
||||||
|
"title": "【가상모드24】 유저무쌍 멀티 유니버스!",
|
||||||
|
"startYear": 180,
|
||||||
|
"history": [
|
||||||
|
"<C>●</>180년 1월:<L><b>【가상모드24】</b>유저무쌍 멀티 유니버스!</>",
|
||||||
|
"<C>●</>180년 1월:<L><b>【이벤트】</b></>졸장과 명장, 충신과 간신, 무장과 지장, 모든 것이 뒤바뀐 세계"
|
||||||
|
],
|
||||||
|
"stat": {
|
||||||
|
"total": 310,
|
||||||
|
"min": 40,
|
||||||
|
"max": 140
|
||||||
|
},
|
||||||
|
"iconPath": ".",
|
||||||
|
"fiction": 1,
|
||||||
|
"nation":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"const": {
|
||||||
|
"npcBanMessageProb":0,
|
||||||
|
"npcSeizureMessageProb":0,
|
||||||
|
"npcMessageFreqByDay":8
|
||||||
|
},
|
||||||
|
"diplomacy":[],
|
||||||
|
"general":[
|
||||||
|
[0, "아회남", null, 0, null, 75, 46, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "이적", null, 0, null, 90, 86, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "윤상", null, 0, null, 89, 86, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "윤묵", null, 0, null, 84, 85, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "우금", null, 0, null, 55, 48, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "위관", null, 0, null, 71, 84, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "원윤", null, 0, null, 88, 86, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "원희", null, 0, null, 74, 87, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "염행", null, 0, null, 62, 40, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "염유", null, 0, null, 79, 80, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "원술", null, 0, null, 80, 85, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "원상", null, 0, null, 87, 45, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "원소", null, 0, null, 50, 58, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "염상", null, 0, null, 80, 83, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "원담", null, 0, null, 80, 42, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "염포", null, 0, null, 80, 85, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "왕위", null, 0, null, 80, 60, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "왕윤", null, 0, null, 87, 88, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "왕항", null, 0, null, 64, 87, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "왕찬", null, 0, null, 85, 87, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "왕수", null, 0, null, 86, 83, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "왕숙", null, 0, null, 84, 78, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "왕준", null, 0, null, 55, 76, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "왕쌍", null, 0, null, 73, 42, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "왕창", null, 0, null, 76, 83, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "왕평", null, 0, null, 52, 39, 69, 0, 160, 300, null, null],
|
||||||
|
[0, "왕보", null, 0, null, 78, 89, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "왕문", null, 0, null, 75, 55, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "왕릉", null, 0, null, 66, 80, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "왕루", null, 0, null, 90, 77, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "왕랑", null, 0, null, 87, 75, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "온회", null, 0, null, 78, 74, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "하안", null, 0, null, 85, 70, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "괴월", null, 0, null, 79, 72, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "괴량", null, 0, null, 72, 77, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "가화", null, 0, null, 81, 55, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "가규", null, 0, null, 62, 79, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "하의", null, 0, null, 84, 51, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "화흠", null, 0, null, 89, 87, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "가후", null, 0, null, 82, 96, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "곽가", null, 0, null, 90, 95, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "악환", null, 0, null, 75, 40, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "곽사", null, 0, null, 76, 54, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "악취", null, 0, null, 87, 44, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "곽준", null, 0, null, 67, 88, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "학소", null, 0, null, 52, 57, 7, 0, 160, 300, null, null],
|
||||||
|
[0, "악진", null, 0, null, 60, 35, 74, 0, 160, 300, null, null],
|
||||||
|
[0, "곽도", null, 0, null, 78, 90, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "학맹", null, 0, null, 78, 43, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "곽유지", null, 0, null, 82, 81, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "곽익", null, 0, null, 67, 71, 11, 0, 160, 300, null, null],
|
||||||
|
[0, "곽회", null, 0, null, 50, 74, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "하후위", null, 0, null, 69, 47, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "하후연", null, 0, null, 45, 28, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "하후은", null, 0, null, 87, 52, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "하후화", null, 0, null, 90, 86, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "하후혜", null, 0, null, 90, 88, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "하후현", null, 0, null, 86, 90, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "하후상", null, 0, null, 61, 65, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "하후덕", null, 0, null, 71, 57, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "하후돈", null, 0, null, 49, 18, 32, 0, 160, 300, null, null, "부모님께 받은 신체 쫀맛탱!"],
|
||||||
|
[0, "하후패", null, 0, null, 61, 35, 77, 0, 160, 300, null, null],
|
||||||
|
[0, "하후무", null, 0, null, 98, 100, 73, 0, 160, 300, null, null, "나와 싸워 이길 자 누구인가!"],
|
||||||
|
[0, "가충", null, 0, null, 86, 89, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "하진", null, 0, null, 89, 90, 45, 0, 160, 300, null, null, "돼지 잡던 내가 대장군?"],
|
||||||
|
[0, "화웅", null, 0, null, 62, 30, 75, 0, 160, 300, null, null],
|
||||||
|
[0, "한윤", null, 0, null, 84, 81, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "관우", null, 0, null, 44, 21, 44, 0, 160, 300, null, null, "차가 식기 전에 목을 베이고 오겠소!"],
|
||||||
|
[0, "환계", null, 0, null, 85, 84, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "관해", null, 0, null, 70, 48, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "관구검", null, 0, null, 56, 44, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "한현", null, 0, null, 96, 51, 97, 0, 160, 300, null, null],
|
||||||
|
[0, "한호", null, 0, null, 67, 80, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "관흥", null, 0, null, 64, 46, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "관색", null, 0, null, 66, 47, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "한수", null, 0, null, 62, 82, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "한숭", null, 0, null, 85, 85, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "관정", null, 0, null, 84, 88, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "한섬", null, 0, null, 71, 44, 94, 0, 160, 300, null, null],
|
||||||
|
[0, "감택", null, 0, null, 84, 70, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "한충", null, 0, null, 76, 53, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "한당", null, 0, null, 64, 45, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "한덕", null, 0, null, 77, 54, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "감녕", null, 0, null, 48, 45, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "한복", null, 0, null, 82, 87, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "관평", null, 0, null, 62, 38, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "간옹", null, 0, null, 93, 91, 45, 0, 160, 300, null, null, "삼대장 간손미에서 간을 맡고 있습니다"],
|
||||||
|
[0, "안량", null, 0, null, 52, 44, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "위연", null, 0, null, 49, 30, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "국의", null, 0, null, 56, 52, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "희지재", null, 0, null, 77, 85, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "위속", null, 0, null, 73, 52, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "위유", null, 0, null, 89, 89, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "우금2", null, 0, null, 68, 51, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "우보", null, 0, null, 82, 60, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "강유", null, 0, null, 48, 58, 27, 0, 160, 300, null, null, "제갈량 너무 멍청하네 진짜"],
|
||||||
|
[0, "공지", null, 0, null, 87, 88, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "교유", null, 0, null, 76, 51, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "공도", null, 0, null, 81, 50, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "허공", null, 0, null, 86, 44, 76, 0, 160, 300, null, null],
|
||||||
|
[0, "허정", null, 0, null, 87, 79, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "허저", null, 0, null, 86, 23, 96, 0, 160, 300, null, null, "조조군의 지혜주머니 호치님이시다"],
|
||||||
|
[0, "허유", null, 0, null, 74, 89, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "기령", null, 0, null, 55, 46, 69, 0, 160, 300, null, null],
|
||||||
|
[0, "김의", null, 0, null, 88, 82, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "김배삼결", null, 0, null, 76, 44, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "김선", null, 0, null, 88, 52, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "우번", null, 0, null, 84, 87, 33, 0, 160, 300, null, null],
|
||||||
|
[0, "형도영", null, 0, null, 71, 41, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "엄안", null, 0, null, 58, 37, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "엄망", null, 0, null, 72, 49, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "엄준", null, 0, null, 86, 78, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "엄정", null, 0, null, 90, 85, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "엄백호", null, 0, null, 96, 69, 99, 0, 160, 300, null, null, "내가 바로 동오의 엄덕왕이다!"],
|
||||||
|
[0, "엄여", null, 0, null, 90, 52, 96, 0, 160, 300, null, null, "내가 바로 동오의 엄덕왕 동생이다!"],
|
||||||
|
[0, "오의", null, 0, null, 61, 47, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "황개", null, 0, null, 60, 43, 76, 0, 160, 300, null, null, "주유 이 미친 놈아!"],
|
||||||
|
[0, "고간", null, 0, null, 66, 64, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "황권", null, 0, null, 65, 66, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "고유", null, 0, null, 83, 87, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "고순", null, 0, null, 53, 31, 60, 0, 160, 300, null, null, "함진영 그거 망한 지 오래됐음"],
|
||||||
|
[0, "고상", null, 0, null, 72, 52, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "고승", null, 0, null, 73, 57, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "후성", null, 0, null, 66, 55, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "후선", null, 0, null, 77, 44, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "황조", null, 0, null, 59, 51, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "공손월", null, 0, null, 66, 48, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "공손연", null, 0, null, 75, 40, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "공손공", null, 0, null, 89, 83, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "공손강", null, 0, null, 68, 44, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "공손찬", null, 0, null, 54, 38, 68, 0, 160, 300, null, null, "백마 어떻게 타요?"],
|
||||||
|
[0, "공손속", null, 0, null, 77, 42, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "공손도", null, 0, null, 73, 49, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "공손범", null, 0, null, 67, 41, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "황충", null, 0, null, 52, 34, 65, 0, 160, 300, null, null],
|
||||||
|
[0, "고정", null, 0, null, 85, 57, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "고패", null, 0, null, 74, 70, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "황보숭", null, 0, null, 49, 29, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "공융", null, 0, null, 91, 86, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "고람", null, 0, null, 64, 38, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "오경", null, 0, null, 71, 43, 75, 0, 160, 300, null, null],
|
||||||
|
[0, "호거아", null, 0, null, 70, 48, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "호진", null, 0, null, 75, 46, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "올돌골", null, 0, null, 96, 54, 99, 0, 160, 300, null, null, "남만이 낳은 천재 올돌골님이시다"],
|
||||||
|
[0, "호반", null, 0, null, 85, 41, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "오반", null, 0, null, 66, 49, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "고옹", null, 0, null, 88, 82, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "오란", null, 0, null, 72, 50, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "채화", null, 0, null, 91, 41, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "채중", null, 0, null, 90, 46, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "채모", null, 0, null, 70, 45, 63, 0, 160, 300, null, null],
|
||||||
|
[0, "착융", null, 0, null, 83, 51, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "사마의", null, 0, null, 41, 47, 42, 0, 160, 300, null, null, "조조 걔 별 거 아님"],
|
||||||
|
[0, "사마염", null, 0, null, 71, 81, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "사마사", null, 0, null, 56, 76, 41, 0, 160, 300, null, null, "위나라 조진 썰 푼다"],
|
||||||
|
[0, "사마소", null, 0, null, 55, 83, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "사마부", null, 0, null, 70, 83, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "사마랑", null, 0, null, 80, 39, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "사마가", null, 0, null, 74, 26, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "주흔", null, 0, null, 75, 89, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "주앙", null, 0, null, 66, 55, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "주지", null, 0, null, 67, 45, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "주창", null, 0, null, 72, 43, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "주태", null, 0, null, 56, 30, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "주방", null, 0, null, 88, 66, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "주유", null, 0, null, 43, 22, 43, 0, 160, 300, null, null, "동남풍이 부는구나. 황개 몸에 불을 질러라."],
|
||||||
|
[0, "주환", null, 0, null, 53, 36, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "주거", null, 0, null, 63, 83, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "축융", null, 0, null, 98, 65, 95, 0, 160, 300, null, null],
|
||||||
|
[0, "주준", null, 0, null, 51, 83, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "주연", null, 0, null, 54, 55, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "주치", null, 0, null, 69, 56, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "주포", null, 0, null, 72, 57, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "주령", null, 0, null, 62, 47, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "순욱", null, 0, null, 62, 72, 33, 0, 160, 300, null, null],
|
||||||
|
[0, "순우경", null, 0, null, 62, 74, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "순심", null, 0, null, 85, 86, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "순유", null, 0, null, 60, 75, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "장완", null, 0, null, 62, 76, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "종회", null, 0, null, 52, 78, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "장간", null, 0, null, 81, 84, 64, 0, 160, 300, null, null],
|
||||||
|
[0, "장의거", null, 0, null, 69, 91, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "장흠", null, 0, null, 62, 45, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "장제3", null, 0, null, 78, 90, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "초주", null, 0, null, 84, 87, 23, 0, 160, 300, null, null],
|
||||||
|
[0, "초촉", null, 0, null, 75, 64, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "향총", null, 0, null, 64, 84, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "종요", null, 0, null, 61, 86, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "향랑", null, 0, null, 82, 82, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "서영", null, 0, null, 48, 50, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈각", null, 0, null, 68, 83, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈근", null, 0, null, 65, 26, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈균", null, 0, null, 81, 55, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈탄", null, 0, null, 68, 86, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈량", null, 0, null, 42, 14, 22, 0, 160, 300, null, null, "헤헤헤…제갈량 바보 아니다. 엄마가 바보 아니라 그랬다."],
|
||||||
|
[0, "서황", null, 0, null, 45, 26, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "서서", null, 0, null, 46, 26, 21, 0, 160, 300, null, null, "제갈량 어디 가서 나랑 동문이라고 하지마라"],
|
||||||
|
[0, "서성", null, 0, null, 54, 59, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "서막", null, 0, null, 85, 80, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "신의", null, 0, null, 85, 50, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "신탐", null, 0, null, 84, 58, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "심배", null, 0, null, 60, 60, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "신비", null, 0, null, 88, 76, 51, 0, 160, 300, null, null, "뭘 봐? 인체 신비해지고 싶냐"],
|
||||||
|
[0, "신평", null, 0, null, 71, 45, 63, 0, 160, 300, null, null],
|
||||||
|
[0, "진복", null, 0, null, 89, 83, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "진랑", null, 0, null, 82, 60, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "휴고", null, 0, null, 77, 59, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "추단", null, 0, null, 79, 46, 76, 0, 160, 300, null, null],
|
||||||
|
[0, "성의", null, 0, null, 66, 58, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "성공영", null, 0, null, 67, 38, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "설종", null, 0, null, 76, 74, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "단경", null, 0, null, 69, 52, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "전종", null, 0, null, 72, 85, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "조예", null, 0, null, 88, 88, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "조휴", null, 0, null, 56, 52, 72, 0, 160, 300, null, null],
|
||||||
|
[0, "송헌", null, 0, null, 72, 53, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "조앙", null, 0, null, 62, 40, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "조홍", null, 0, null, 60, 55, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "조순", null, 0, null, 55, 37, 77, 0, 160, 300, null, null],
|
||||||
|
[0, "조창", null, 0, null, 54, 39, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "조식", null, 0, null, 85, 93, 14, 0, 160, 300, null, null],
|
||||||
|
[0, "조진", null, 0, null, 52, 56, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "조인", null, 0, null, 46, 40, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "조성", null, 0, null, 86, 66, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "조조", null, 0, null, 40, 17, 13, 0, 160, 300, null, null, "미망인이 뭐예요?"],
|
||||||
|
[0, "조충", null, 0, null, 87, 82, 36, 0, 160, 300, null, null],
|
||||||
|
[0, "장패", null, 0, null, 62, 44, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "조비", null, 0, null, 65, 36, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "조표", null, 0, null, 86, 51, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "저수", null, 0, null, 54, 31, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "소비", null, 0, null, 71, 85, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "조무", null, 0, null, 70, 49, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "손환", null, 0, null, 58, 64, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "손견", null, 0, null, 46, 45, 22, 0, 160, 300, null, null, "강동의 고양이 손견이 간다"],
|
||||||
|
[0, "손건", null, 0, null, 96, 93, 51, 0, 160, 300, null, null, "삼대장 간손미에서 손을 맡고 있습니다"],
|
||||||
|
[0, "손권", null, 0, null, 54, 49, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "손교", null, 0, null, 63, 58, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "손책", null, 0, null, 47, 26, 36, 0, 160, 300, null, null],
|
||||||
|
[0, "손소", null, 0, null, 58, 61, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "손정", null, 0, null, 74, 77, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "손중", null, 0, null, 78, 49, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "손등", null, 0, null, 78, 33, 61, 0, 160, 300, null, null],
|
||||||
|
[0, "손유", null, 0, null, 63, 50, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "손익", null, 0, null, 73, 57, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "손례", null, 0, null, 62, 39, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "태사자", null, 0, null, 46, 22, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "대래동주", null, 0, null, 89, 57, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "대릉", null, 0, null, 70, 55, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "타사대왕", null, 0, null, 78, 27, 70, 0, 160, 300, null, null],
|
||||||
|
[0, "담웅", null, 0, null, 82, 57, 96, 0, 160, 300, null, null],
|
||||||
|
[0, "장윤", null, 0, null, 68, 56, 94, 0, 160, 300, null, null],
|
||||||
|
[0, "조운", null, 0, null, 42, 22, 13, 0, 160, 300, null, null, "아두야 나 좀 살려줘"],
|
||||||
|
[0, "장위", null, 0, null, 66, 54, 95, 0, 160, 300, null, null],
|
||||||
|
[0, "장영", null, 0, null, 65, 56, 69, 0, 160, 300, null, null],
|
||||||
|
[0, "장연", null, 0, null, 64, 49, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "장횡", null, 0, null, 81, 30, 70, 0, 160, 300, null, null],
|
||||||
|
[0, "장온", null, 0, null, 88, 79, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "장개", null, 0, null, 96, 54, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "장각", null, 0, null, 53, 30, 50, 0, 160, 300, null, null],
|
||||||
|
[0, "장기", null, 0, null, 66, 72, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "장의", null, 0, null, 61, 85, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "장훈", null, 0, null, 68, 62, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "장굉", null, 0, null, 86, 88, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "장합", null, 0, null, 48, 22, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "조홍2", null, 0, null, 74, 68, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "장제2", null, 0, null, 70, 74, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "장수", null, 0, null, 60, 57, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "장소", null, 0, null, 59, 87, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "장송", null, 0, null, 80, 64, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "장임", null, 0, null, 55, 46, 76, 0, 160, 300, null, null],
|
||||||
|
[0, "장제", null, 0, null, 73, 37, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "장막", null, 0, null, 88, 87, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "조범", null, 0, null, 92, 90, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "장비", null, 0, null, 43, 2, 36, 0, 160, 300, null, null, "덤비지 마….제발"],
|
||||||
|
[0, "장포", null, 0, null, 62, 46, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "장보", null, 0, null, 57, 80, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "장만성", null, 0, null, 65, 49, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "장양", null, 0, null, 68, 50, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "장익", null, 0, null, 65, 85, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "장료", null, 0, null, 44, 26, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "장량", null, 0, null, 62, 50, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "조루", null, 0, null, 70, 91, 62, 0, 160, 300, null, null],
|
||||||
|
[0, "장로", null, 0, null, 75, 98, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "진횡", null, 0, null, 76, 57, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "진응", null, 0, null, 78, 58, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "진기", null, 0, null, 82, 65, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "진궁", null, 0, null, 56, 85, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "진교", null, 0, null, 79, 83, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "진군", null, 0, null, 88, 13, 65, 0, 160, 300, null, null],
|
||||||
|
[0, "진규", null, 0, null, 80, 76, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "진식", null, 0, null, 70, 59, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "진진", null, 0, null, 92, 90, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "진태", null, 0, null, 54, 72, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "진등", null, 0, null, 61, 81, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "진도", null, 0, null, 58, 52, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "진무", null, 0, null, 64, 43, 97, 0, 160, 300, null, null],
|
||||||
|
[0, "진란", null, 0, null, 74, 51, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "진림", null, 0, null, 95, 11, 65, 0, 160, 300, null, null],
|
||||||
|
[0, "정욱", null, 0, null, 64, 91, 36, 0, 160, 300, null, null],
|
||||||
|
[0, "정원지", null, 0, null, 71, 56, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "정은", null, 0, null, 71, 57, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "정원", null, 0, null, 70, 54, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "정보", null, 0, null, 56, 11, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "정봉", null, 0, null, 59, 38, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "전위", null, 0, null, 41, 22, 48, 0, 160, 300, null, null, "적이 열 보 안으로 들어오거든 나부터 튄다"],
|
||||||
|
[0, "전해", null, 0, null, 72, 55, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "전주", null, 0, null, 74, 89, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "전풍", null, 0, null, 58, 67, 24, 0, 160, 300, null, null, "아 원소 저거 진짜 사람 아니네"],
|
||||||
|
[0, "전예", null, 0, null, 47, 55, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "동윤", null, 0, null, 90, 82, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "동화", null, 0, null, 83, 86, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "등애", null, 0, null, 48, 47, 26, 0, 160, 300, null, null, "이 산이 아닌개벼…"],
|
||||||
|
[0, "도겸", null, 0, null, 89, 83, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "등현", null, 0, null, 79, 67, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "등지", null, 0, null, 67, 68, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "동습", null, 0, null, 68, 45, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "동승", null, 0, null, 84, 87, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "동소", null, 0, null, 86, 85, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "동탁", null, 0, null, 49, 43, 73, 0, 160, 300, null, null],
|
||||||
|
[0, "동도나", null, 0, null, 72, 57, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "동민", null, 0, null, 89, 51, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "등무", null, 0, null, 79, 55, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "두기", null, 0, null, 66, 17, 62, 0, 160, 300, null, null],
|
||||||
|
[0, "두예", null, 0, null, 44, 71, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "배원소", null, 0, null, 90, 45, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "마완", null, 0, null, 69, 56, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "마휴", null, 0, null, 72, 57, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "파재", null, 0, null, 66, 56, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "마준", null, 0, null, 82, 88, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "마속", null, 0, null, 69, 51, 26, 0, 160, 300, null, null],
|
||||||
|
[0, "마대", null, 0, null, 61, 45, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "마충", null, 0, null, 62, 48, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "마초", null, 0, null, 54, 33, 46, 0, 160, 300, null, null, "서량의 븅마초 나가신다"],
|
||||||
|
[0, "마철", null, 0, null, 70, 48, 77, 0, 160, 300, null, null],
|
||||||
|
[0, "마등", null, 0, null, 55, 30, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "마량", null, 0, null, 87, 17, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "반준", null, 0, null, 79, 91, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "반장", null, 0, null, 64, 50, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "번조", null, 0, null, 74, 57, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "번능", null, 0, null, 71, 19, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "반봉", null, 0, null, 84, 53, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "비의", null, 0, null, 58, 84, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "비연", null, 0, null, 80, 62, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "비시", null, 0, null, 82, 42, 75, 0, 160, 300, null, null],
|
||||||
|
[0, "미축", null, 0, null, 90, 91, 52, 0, 160, 300, null, null, "돈도 많고 싸움도 잘하는 간손미 에이스 미축입니다"],
|
||||||
|
[0, "미방", null, 0, null, 86, 50, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "비요", null, 0, null, 70, 88, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "무안국", null, 0, null, 70, 51, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "풍습", null, 0, null, 68, 59, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "부사인", null, 0, null, 94, 47, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "부첨", null, 0, null, 67, 45, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "부손", null, 0, null, 87, 90, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "문앙", null, 0, null, 64, 34, 75, 0, 160, 300, null, null],
|
||||||
|
[0, "문흠", null, 0, null, 66, 61, 26, 0, 160, 300, null, null],
|
||||||
|
[0, "문추", null, 0, null, 53, 26, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "문빙", null, 0, null, 52, 35, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "변희", null, 0, null, 84, 50, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "망아장", null, 0, null, 90, 51, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "봉기", null, 0, null, 84, 90, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "방희", null, 0, null, 80, 82, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "법정", null, 0, null, 58, 46, 11, 0, 160, 300, null, null],
|
||||||
|
[0, "방통", null, 0, null, 51, 43, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "방덕", null, 0, null, 51, 26, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "포륭", null, 0, null, 82, 54, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "목순", null, 0, null, 88, 33, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "목록대왕", null, 0, null, 93, 59, 99, 0, 160, 300, null, null, "코끼리만 있으면 너도 한 방 나도 한 방"],
|
||||||
|
[0, "보즐", null, 0, null, 57, 19, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "만총", null, 0, null, 52, 16, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "모개", null, 0, null, 77, 81, 20, 0, 160, 300, null, null],
|
||||||
|
[0, "맹획", null, 0, null, 59, 12, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "맹체", null, 0, null, 65, 85, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "맹우", null, 0, null, 90, 9, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "유섭", null, 0, null, 78, 51, 96, 0, 160, 300, null, null],
|
||||||
|
[0, "양부", null, 0, null, 78, 86, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "옹개", null, 0, null, 67, 55, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "양의", null, 0, null, 72, 20, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "양호", null, 0, null, 46, 51, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "양홍", null, 0, null, 92, 87, 13, 0, 160, 300, null, null],
|
||||||
|
[0, "양앙", null, 0, null, 72, 58, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "양추", null, 0, null, 88, 55, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "양수", null, 0, null, 92, 91, 1, 0, 160, 300, null, null],
|
||||||
|
[0, "양추2", null, 0, null, 73, 56, 96, 0, 160, 300, null, null],
|
||||||
|
[0, "양송", null, 0, null, 100, 65, 98, 0, 160, 300, null, null, "군신 악의만이 나와 비견될만 하다"],
|
||||||
|
[0, "양임", null, 0, null, 70, 42, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "양조", null, 0, null, 87, 79, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "양백", null, 0, null, 90, 81, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "양부2", null, 0, null, 73, 90, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "양봉", null, 0, null, 74, 75, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "양봉2", null, 0, null, 86, 28, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "뇌동", null, 0, null, 71, 52, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "뇌박", null, 0, null, 78, 60, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "이이", null, 0, null, 77, 22, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "이회", null, 0, null, 61, 82, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "이각", null, 0, null, 71, 58, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "육항", null, 0, null, 46, 61, 27, 0, 160, 300, null, null],
|
||||||
|
[0, "육적", null, 0, null, 60, 61, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "육손", null, 0, null, 45, 69, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "이엄", null, 0, null, 57, 46, 77, 0, 160, 300, null, null],
|
||||||
|
[0, "이유", null, 0, null, 69, 84, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "이숙", null, 0, null, 87, 41, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "이통", null, 0, null, 67, 49, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "이전", null, 0, null, 62, 40, 61, 0, 160, 300, null, null],
|
||||||
|
[0, "이풍", null, 0, null, 71, 56, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "유언", null, 0, null, 79, 82, 50, 0, 160, 300, null, null],
|
||||||
|
[0, "유괴", null, 0, null, 69, 57, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "유기", null, 0, null, 88, 88, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "유우", null, 0, null, 78, 87, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "유훈", null, 0, null, 90, 37, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "유현", null, 0, null, 86, 44, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "유순", null, 0, null, 77, 34, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "유장", null, 0, null, 99, 90, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "유심", null, 0, null, 80, 82, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "유선", null, 0, null, 97, 65, 96, 0, 160, 300, null, null, "촉은 제갈량이 다 말아먹었다"],
|
||||||
|
[0, "유종", null, 0, null, 86, 88, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "유도", null, 0, null, 85, 87, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "유파", null, 0, null, 81, 38, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "유반", null, 0, null, 71, 54, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "유비", null, 0, null, 52, 18, 23, 0, 160, 300, null, null, "돗자리 좀 사주세요"],
|
||||||
|
[0, "유표", null, 0, null, 82, 81, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "유복", null, 0, null, 76, 81, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "유벽", null, 0, null, 70, 58, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "유봉", null, 0, null, 65, 51, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "유엽", null, 0, null, 84, 65, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "유요", null, 0, null, 78, 63, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "여위황", null, 0, null, 82, 57, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "요화", null, 0, null, 67, 54, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "양흥", null, 0, null, 79, 45, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "양습", null, 0, null, 67, 80, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "양서", null, 0, null, 84, 78, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "능조", null, 0, null, 65, 29, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "능통", null, 0, null, 57, 11, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "여개", null, 0, null, 87, 80, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "여건", null, 0, null, 83, 40, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "여광", null, 0, null, 84, 41, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "여상", null, 0, null, 86, 39, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "여대", null, 0, null, 60, 69, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "여범", null, 0, null, 67, 86, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "여포", null, 0, null, 51, 10, 100, 0, 160, 300, null, null, "이기기 위한 전략만 내어드리겠습니다."],
|
||||||
|
[0, "여몽", null, 0, null, 49, 31, 10, 0, 160, 300, null, null],
|
||||||
|
[0, "윤직", null, 0, null, 88, 88, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "냉포", null, 0, null, 69, 48, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "누규", null, 0, null, 88, 87, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "노숙", null, 0, null, 51, 64, 17, 0, 160, 300, null, null],
|
||||||
|
[0, "노식", null, 0, null, 54, 77, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "범강", null, 0, null, 89, 89, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "장달", null, 0, null, 87, 84, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "규람", null, 0, null, 85, 50, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "대원", null, 0, null, 82, 88, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "왕기", null, 0, null, 59, 76, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "왕상", null, 0, null, 87, 89, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "왕돈", null, 0, null, 80, 54, 94, 0, 160, 300, null, null],
|
||||||
|
[0, "악침", null, 0, null, 67, 55, 97, 0, 160, 300, null, null],
|
||||||
|
[0, "하제", null, 0, null, 57, 79, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "환범", null, 0, null, 81, 89, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "견초", null, 0, null, 68, 51, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "고당륭", null, 0, null, 90, 90, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "오찬", null, 0, null, 72, 91, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "호질", null, 0, null, 67, 88, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "오질", null, 0, null, 90, 89, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "호준", null, 0, null, 61, 54, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "고담", null, 0, null, 87, 87, 33, 0, 160, 300, null, null],
|
||||||
|
[0, "최림", null, 0, null, 84, 85, 14, 0, 160, 300, null, null],
|
||||||
|
[0, "사마망", null, 0, null, 62, 82, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "주이", null, 0, null, 70, 57, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "전단", null, 0, null, 73, 76, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "조우", null, 0, null, 89, 83, 23, 0, 160, 300, null, null],
|
||||||
|
[0, "조상", null, 0, null, 81, 87, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "조방", null, 0, null, 90, 86, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "태사향", null, 0, null, 83, 52, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "장휴", null, 0, null, 77, 43, 66, 0, 160, 300, null, null],
|
||||||
|
[0, "장호", null, 0, null, 65, 56, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "조광", null, 0, null, 73, 59, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "장집", null, 0, null, 64, 81, 50, 0, 160, 300, null, null],
|
||||||
|
[0, "장승", null, 0, null, 63, 85, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "장소2", null, 0, null, 87, 84, 19, 0, 160, 300, null, null],
|
||||||
|
[0, "조통", null, 0, null, 72, 53, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "진표", null, 0, null, 74, 88, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "정무", null, 0, null, 84, 85, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "정봉2", null, 0, null, 74, 22, 74, 0, 160, 300, null, null],
|
||||||
|
[0, "전만", null, 0, null, 89, 11, 67, 0, 160, 300, null, null],
|
||||||
|
[0, "마균", null, 0, null, 88, 83, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "방회", null, 0, null, 71, 55, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "낙통", null, 0, null, 64, 82, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "육개", null, 0, null, 75, 79, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "유찬", null, 0, null, 62, 59, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "유소", null, 0, null, 72, 87, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "요립", null, 0, null, 88, 85, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "여거", null, 0, null, 62, 89, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈첨", null, 0, null, 70, 83, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "손휴", null, 0, null, 83, 90, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "극정", null, 0, null, 90, 77, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "호분", null, 0, null, 69, 54, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "손량", null, 0, null, 88, 84, 30, 0, 160, 300, null, null],
|
||||||
|
[0, "마막", null, 0, null, 96, 98, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "손호", null, 0, null, 89, 43, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "조모", null, 0, null, 86, 39, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "조환", null, 0, null, 90, 42, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "사마유", null, 0, null, 69, 86, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈상", null, 0, null, 76, 51, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "손화", null, 0, null, 87, 71, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "염우", null, 0, null, 88, 49, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "왕경", null, 0, null, 73, 81, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "왕혼", null, 0, null, 66, 59, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "곽혁", null, 0, null, 87, 81, 30, 0, 160, 300, null, null],
|
||||||
|
[0, "가범", null, 0, null, 80, 83, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "서질", null, 0, null, 72, 47, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "손준", null, 0, null, 76, 40, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "손침", null, 0, null, 82, 85, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "우사", null, 0, null, 79, 86, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "진건", null, 0, null, 68, 49, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "동궐", null, 0, null, 75, 81, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "당자", null, 0, null, 79, 49, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "등충", null, 0, null, 64, 40, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "황숭", null, 0, null, 73, 70, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "화핵", null, 0, null, 80, 76, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "허의", null, 0, null, 89, 46, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "송겸", null, 0, null, 74, 42, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "호제", null, 0, null, 83, 81, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "나헌", null, 0, null, 54, 78, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "노숙2", null, 0, null, 67, 87, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "구성", null, 0, null, 77, 40, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "어부라", null, 0, null, 78, 42, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "아하소과", null, 0, null, 89, 54, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "가비능", null, 0, null, 63, 41, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "구력거", null, 0, null, 60, 42, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "강단", null, 0, null, 75, 47, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "황란", null, 0, null, 77, 45, 76, 0, 160, 300, null, null],
|
||||||
|
[0, "호주천", null, 0, null, 70, 49, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "종리목", null, 0, null, 56, 79, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈교", null, 0, null, 78, 83, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "답돈", null, 0, null, 56, 48, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "반임", null, 0, null, 74, 41, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "보도근", null, 0, null, 76, 57, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "미당대왕", null, 0, null, 81, 51, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "유표2", null, 0, null, 67, 56, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "루반", null, 0, null, 75, 44, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "손관", null, 0, null, 68, 42, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "곽석", null, 0, null, 81, 49, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "주조", null, 0, null, 77, 42, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "장거", null, 0, null, 61, 45, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "장순", null, 0, null, 67, 49, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "철리길", null, 0, null, 63, 50, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "주삭", null, 0, null, 90, 52, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "황월영", null, 0, null, 94, 97, 58, 0, 160, 300, null, null, "어쩌다 저런 걸 남편이라고…."],
|
||||||
|
[0, "채염", null, 0, null, 98, 99, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "소교", null, 0, null, 97, 95, 52, 0, 160, 300, null, null, "주유 너무 무능하다."],
|
||||||
|
[0, "신헌영", null, 0, null, 85, 95, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "손상향", null, 0, null, 98, 58, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "대교", null, 0, null, 98, 90, 52, 0, 160, 300, null, null, "손책 너무 무능하다."],
|
||||||
|
[0, "초선", null, 0, null, 99, 98, 59, 0, 160, 300, null, null, "동탁 이리와봐 한대만 맞자"],
|
||||||
|
[0, "교모", null, 0, null, 86, 90, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "관구수", null, 0, null, 82, 28, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "관구전", null, 0, null, 77, 88, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "원유", null, 0, null, 84, 80, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "왕광", null, 0, null, 75, 86, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "신창", null, 0, null, 85, 84, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "사마주", null, 0, null, 79, 86, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "양제", null, 0, null, 73, 82, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "성만", null, 0, null, 79, 42, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "오연", null, 0, null, 74, 47, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "맹충", null, 0, null, 90, 72, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "잠혼", null, 0, null, 100, 99, 58, 0, 160, 300, null, null, "이 몸이 만부부당이라 불리는 맹장 잠혼이다."],
|
||||||
|
[0, "사정", null, 0, null, 76, 44, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "심영", null, 0, null, 70, 43, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "도준", null, 0, null, 75, 44, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "만욱", null, 0, null, 89, 85, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "오언", null, 0, null, 64, 49, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "위막", null, 0, null, 86, 58, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "시삭", null, 0, null, 88, 55, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "전속", null, 0, null, 90, 40, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "장화", null, 0, null, 84, 83, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "오거", null, 0, null, 90, 19, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "추정", null, 0, null, 70, 84, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "장특", null, 0, null, 67, 86, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "곽마", null, 0, null, 72, 49, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "석포", null, 0, null, 71, 49, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "견홍", null, 0, null, 70, 56, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "한거자", null, 0, null, 89, 81, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "휴원진", null, 0, null, 88, 22, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "곽원", null, 0, null, 74, 84, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "계옹", null, 0, null, 77, 87, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "이부", null, 0, null, 89, 84, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "왕업", null, 0, null, 87, 84, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "좌혁", null, 0, null, 78, 44, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "화타", null, 0, null, 83, 96, 37, 0, 160, 300, null, null, "가시는 길 한 방에 편안하게"],
|
||||||
|
[0, "사마휘", null, 0, null, 85, 84, 28, 0, 160, 300, null, null, "공명과 방통은 아무 짝에도 쓸모가 없습니다"],
|
||||||
|
[0, "우길", null, 0, null, 87, 85, 30, 0, 160, 300, null, null],
|
||||||
|
[0, "헌제", null, 0, null, 88, 92, 52, 0, 160, 300, null, null, "한 황실의 미래는 내 알바 아니다"],
|
||||||
|
[0, "백기", null, 0, null, 40, 42, 61, 0, 160, 300, null, null],
|
||||||
|
[0, "한신", null, 0, null, 40, 56, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "악비", null, 0, null, 41, 48, 20, 0, 160, 300, null, null],
|
||||||
|
[0, "항적", null, 0, null, 41, 18, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "악의", null, 0, null, 42, 27, 13, 0, 160, 300, null, null],
|
||||||
|
[0, "영정", null, 0, null, 43, 25, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "강상", null, 0, null, 46, 40, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "전단2", null, 0, null, 44, 55, 25, 0, 160, 300, null, null],
|
||||||
|
[0, "이목", null, 0, null, 44, 13, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "염파", null, 0, null, 43, 9, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "왕전", null, 0, null, 46, 37, 16, 0, 160, 300, null, null],
|
||||||
|
[0, "오기", null, 0, null, 46, 74, 25, 0, 160, 300, null, null],
|
||||||
|
[0, "곽거병", null, 0, null, 47, 16, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "영포", null, 0, null, 58, 22, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "이신", null, 0, null, 59, 37, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "몽념", null, 0, null, 53, 34, 25, 0, 160, 300, null, null],
|
||||||
|
[0, "전기", null, 0, null, 60, 62, 36, 0, 160, 300, null, null],
|
||||||
|
[0, "극신", null, 0, null, 64, 27, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "항연", null, 0, null, 51, 38, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "인상여", null, 0, null, 71, 14, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "장자방", null, 0, null, 68, 43, 27, 0, 160, 300, null, null],
|
||||||
|
[0, "관이오", null, 0, null, 55, 76, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "손빈", null, 0, null, 57, 38, 12, 0, 160, 300, null, null],
|
||||||
|
[0, "소진", null, 0, null, 50, 23, 14, 0, 160, 300, null, null],
|
||||||
|
[0, "범증", null, 0, null, 72, 86, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "장의2", null, 0, null, 65, 87, 17, 0, 160, 300, null, null],
|
||||||
|
[0, "공구", null, 0, null, 72, 70, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "소하", null, 0, null, 84, 23, 8, 0, 160, 300, null, null],
|
||||||
|
[0, "한비", null, 0, null, 90, 81, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "이사", null, 0, null, 42, 16, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "전문", null, 0, null, 61, 73, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "황헐", null, 0, null, 59, 22, 42, 0, 160, 300, null, null, "헐…"],
|
||||||
|
[0, "황호", null, 0, null, 98, 100, 67, 0, 160, 300, null, null],
|
||||||
|
[0, "방난", null, 0, null, 52, 25, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "개섭", null, 0, null, 89, 33, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "형가", null, 0, null, 88, 41, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "유방", null, 0, null, 50, 24, 15, 0, 160, 300, null, null],
|
||||||
|
[0, "하리", null, 0, null, 98, 96, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "헹이", null, 0, null, 93, 59, 98, 0, 160, 300, null, null],
|
||||||
|
[0, "나나", null, 0, null, 94, 53, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "장임2", null, 0, null, 90, 89, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "하야미", null, 0, null, 96, 67, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "이시리스", null, 0, null, 94, 86, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "연채홍", null, 0, null, 97, 47, 96, 0, 160, 300, null, null],
|
||||||
|
[0, "임사영", null, 0, null, 1, 4, 1, 0, 160, 300, null, null, "일반인 양민입니다"],
|
||||||
|
[0, "장군보", null, 0, null, 92, 90, 62, 0, 160, 300, null, null],
|
||||||
|
[0, "크렌스", null, 0, null, 98, 54, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "콘", null, 0, null, 90, 42, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "리즈나", null, 0, null, 97, 88, 64, 0, 160, 300, null, null, "야겜 하고 싶다"],
|
||||||
|
[0, "오티누스", null, 0, null, 97, 47, 97, 0, 160, 300, null, null],
|
||||||
|
[0, "네시", null, 0, null, 92, 67, 96, 0, 160, 300, null, null, "00"],
|
||||||
|
[0, "시뉴카린", null, 0, null, 91, 90, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "Hide_D", null, 0, null, 91, 41, 95, 0, 160, 300, null, null, "버그 흥겜 힏체섭"],
|
||||||
|
[0, "Pray", null, 0, null, 88, 94, 60, 0, 160, 300, null, null, "탈영 마렵다"],
|
||||||
|
[0, "사스케", null, 0, null, 90, 96, 57, 0, 160, 300, null, null, "아무리 고민해도 찰진 대사가 없습니다."],
|
||||||
|
[0, "SARS", null, 0, null, 91, 61, 92, 0, 160, 300, null, null, "아마존 주식 떡상 기원"],
|
||||||
|
[0, "마요이", null, 0, null, 93, 59, 93, 0, 160, 300, null, null, "로열방 없습니다"],
|
||||||
|
[0, "세정", null, 0, null, 88, 68, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "김나영", null, 0, null, 93, 90, 64, 0, 160, 300, null, null, "김나영 머리에서 김나영"],
|
||||||
|
[0, "Cure", null, 0, null, 89, 63, 94, 0, 160, 300, null, null]
|
||||||
|
],
|
||||||
|
"general_ex":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,868 @@
|
|||||||
|
{
|
||||||
|
"title": "【가상모드24-b】 유저무쌍 멀티 유니버스!(천지비급)",
|
||||||
|
"startYear": 180,
|
||||||
|
"history": [
|
||||||
|
"<C>●</>180년 1월:<L><b>【가상모드24-b】</b>유저무쌍 멀티 유니버스!(비급)</>",
|
||||||
|
"<C>●</>180년 1월:<L><b>【이벤트】</b></>졸장과 명장, 충신과 간신, 무장과 지장, 모든 것이 뒤바뀐 세계"
|
||||||
|
],
|
||||||
|
"stat": {
|
||||||
|
"total": 310,
|
||||||
|
"min": 40,
|
||||||
|
"max": 140
|
||||||
|
},
|
||||||
|
"const": {
|
||||||
|
"npcBanMessageProb":0,
|
||||||
|
"npcSeizureMessageProb":0,
|
||||||
|
"npcMessageFreqByDay":8,
|
||||||
|
"availableSpecialWar": [
|
||||||
|
"che_귀병", "che_신산", "che_환술", "che_집중", "che_신중", "che_반계",
|
||||||
|
"che_보병", "che_궁병", "che_기병", "che_공성",
|
||||||
|
"che_돌격", "che_무쌍", "che_견고", "che_위압",
|
||||||
|
"che_저격", "che_필살", "che_징병", "che_의술", "che_격노", "che_척사"
|
||||||
|
],
|
||||||
|
"allItems": {
|
||||||
|
"horse": {
|
||||||
|
"che_명마_01_노기": 0,
|
||||||
|
"che_명마_02_조랑": 0,
|
||||||
|
"che_명마_03_노새": 0,
|
||||||
|
"che_명마_04_나귀": 0,
|
||||||
|
"che_명마_05_갈색마": 0,
|
||||||
|
"che_명마_06_흑색마": 0,
|
||||||
|
|
||||||
|
"che_명마_07_백마" : 2,
|
||||||
|
"che_명마_07_기주마" : 2,
|
||||||
|
"che_명마_07_오환마" : 2,
|
||||||
|
"che_명마_07_백상" : 2,
|
||||||
|
"che_명마_08_양주마" : 2,
|
||||||
|
"che_명마_08_흉노마" : 2,
|
||||||
|
"che_명마_09_과하마" : 2,
|
||||||
|
"che_명마_09_의남백마" : 2,
|
||||||
|
"che_명마_10_대완마" : 2,
|
||||||
|
"che_명마_10_옥추마" : 2,
|
||||||
|
"che_명마_11_서량마" : 2,
|
||||||
|
"che_명마_11_화종마" : 2,
|
||||||
|
"che_명마_12_사륜거" : 2,
|
||||||
|
"che_명마_12_옥란백용구": 2,
|
||||||
|
"che_명마_13_절영" : 2,
|
||||||
|
"che_명마_13_적로" : 2,
|
||||||
|
"che_명마_14_적란마" : 2,
|
||||||
|
"che_명마_14_조황비전" : 2,
|
||||||
|
"che_명마_15_한혈마" : 2,
|
||||||
|
"che_명마_15_적토마" : 2
|
||||||
|
},
|
||||||
|
"weapon": {
|
||||||
|
"che_무기_01_단도": 0,
|
||||||
|
"che_무기_02_단궁": 0,
|
||||||
|
"che_무기_03_단극": 0,
|
||||||
|
"che_무기_04_목검": 0,
|
||||||
|
"che_무기_05_죽창": 0,
|
||||||
|
"che_무기_06_소부": 0,
|
||||||
|
|
||||||
|
"che_무기_07_동추": 2,
|
||||||
|
"che_무기_07_철편": 2,
|
||||||
|
"che_무기_07_철쇄": 2,
|
||||||
|
"che_무기_07_맥궁": 2,
|
||||||
|
"che_무기_08_유성추": 2,
|
||||||
|
"che_무기_08_철질여골": 2,
|
||||||
|
"che_무기_09_쌍철극": 2,
|
||||||
|
"che_무기_09_동호비궁": 2,
|
||||||
|
"che_무기_10_삼첨도": 2,
|
||||||
|
"che_무기_10_대부": 2,
|
||||||
|
"che_무기_11_고정도": 2,
|
||||||
|
"che_무기_11_이광궁": 2,
|
||||||
|
"che_무기_12_철척사모": 2,
|
||||||
|
"che_무기_12_칠성검": 2,
|
||||||
|
"che_무기_13_사모": 2,
|
||||||
|
"che_무기_13_양유기궁": 2,
|
||||||
|
"che_무기_14_언월도": 2,
|
||||||
|
"che_무기_14_방천화극": 2,
|
||||||
|
"che_무기_15_청홍검": 2,
|
||||||
|
"che_무기_15_의천검": 2
|
||||||
|
},
|
||||||
|
"book": {
|
||||||
|
"che_서적_01_효경전": 0,
|
||||||
|
"che_서적_02_회남자": 0,
|
||||||
|
"che_서적_03_변도론": 0,
|
||||||
|
"che_서적_04_건상역주": 0,
|
||||||
|
"che_서적_05_여씨춘추": 0,
|
||||||
|
"che_서적_06_사민월령": 0,
|
||||||
|
|
||||||
|
"che_서적_07_위료자": 2,
|
||||||
|
"che_서적_07_사마법": 2,
|
||||||
|
"che_서적_07_한서": 2,
|
||||||
|
"che_서적_07_논어": 2,
|
||||||
|
"che_서적_08_전론": 2,
|
||||||
|
"che_서적_08_사기": 2,
|
||||||
|
"che_서적_09_장자": 2,
|
||||||
|
"che_서적_09_역경": 2,
|
||||||
|
"che_서적_10_시경": 2,
|
||||||
|
"che_서적_10_구국론": 2,
|
||||||
|
"che_서적_11_상군서": 2,
|
||||||
|
"che_서적_11_춘추전": 2,
|
||||||
|
"che_서적_12_산해경": 2,
|
||||||
|
"che_서적_12_맹덕신서": 2,
|
||||||
|
"che_서적_13_관자": 2,
|
||||||
|
"che_서적_13_병법24편": 2,
|
||||||
|
"che_서적_14_한비자": 2,
|
||||||
|
"che_서적_14_오자병법": 2,
|
||||||
|
"che_서적_15_노자": 2,
|
||||||
|
"che_서적_15_손자병법": 2
|
||||||
|
},
|
||||||
|
"item": {
|
||||||
|
"che_치료_환약": 0,
|
||||||
|
"che_저격_수극": 0,
|
||||||
|
"che_사기_탁주": 0,
|
||||||
|
"che_훈련_청주": 0,
|
||||||
|
"che_계략_이추": 0,
|
||||||
|
"che_계략_향낭": 0,
|
||||||
|
|
||||||
|
"event_전투특기_격노": 0,
|
||||||
|
"event_전투특기_견고": 0,
|
||||||
|
"event_전투특기_공성": 0,
|
||||||
|
"event_전투특기_궁병": 0,
|
||||||
|
"event_전투특기_귀병": 0,
|
||||||
|
"event_전투특기_기병": 0,
|
||||||
|
"event_전투특기_돌격": 0,
|
||||||
|
"event_전투특기_무쌍": 0,
|
||||||
|
"event_전투특기_반계": 0,
|
||||||
|
"event_전투특기_보병": 0,
|
||||||
|
"event_전투특기_신산": 0,
|
||||||
|
"event_전투특기_신중": 0,
|
||||||
|
"event_전투특기_위압": 0,
|
||||||
|
"event_전투특기_의술": 0,
|
||||||
|
"event_전투특기_저격": 0,
|
||||||
|
"event_전투특기_집중": 0,
|
||||||
|
"event_전투특기_징병": 0,
|
||||||
|
"event_전투특기_척사": 0,
|
||||||
|
"event_전투특기_필살": 0,
|
||||||
|
"event_전투특기_환술": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"iconPath": ".",
|
||||||
|
"fiction": 1,
|
||||||
|
"nation":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"diplomacy":[],
|
||||||
|
"general":[
|
||||||
|
[0, "아회남", null, 0, null, 75, 46, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "이적", null, 0, null, 90, 86, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "윤상", null, 0, null, 89, 86, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "윤묵", null, 0, null, 84, 85, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "우금", null, 0, null, 55, 48, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "위관", null, 0, null, 71, 84, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "원윤", null, 0, null, 88, 86, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "원희", null, 0, null, 74, 87, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "염행", null, 0, null, 62, 40, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "염유", null, 0, null, 79, 80, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "원술", null, 0, null, 80, 85, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "원상", null, 0, null, 87, 45, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "원소", null, 0, null, 50, 58, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "염상", null, 0, null, 80, 83, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "원담", null, 0, null, 80, 42, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "염포", null, 0, null, 80, 85, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "왕위", null, 0, null, 80, 60, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "왕윤", null, 0, null, 87, 88, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "왕항", null, 0, null, 64, 87, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "왕찬", null, 0, null, 85, 87, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "왕수", null, 0, null, 86, 83, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "왕숙", null, 0, null, 84, 78, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "왕준", null, 0, null, 55, 76, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "왕쌍", null, 0, null, 73, 42, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "왕창", null, 0, null, 76, 83, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "왕평", null, 0, null, 52, 39, 69, 0, 160, 300, null, null],
|
||||||
|
[0, "왕보", null, 0, null, 78, 89, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "왕문", null, 0, null, 75, 55, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "왕릉", null, 0, null, 66, 80, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "왕루", null, 0, null, 90, 77, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "왕랑", null, 0, null, 87, 75, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "온회", null, 0, null, 78, 74, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "하안", null, 0, null, 85, 70, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "괴월", null, 0, null, 79, 72, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "괴량", null, 0, null, 72, 77, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "가화", null, 0, null, 81, 55, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "가규", null, 0, null, 62, 79, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "하의", null, 0, null, 84, 51, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "화흠", null, 0, null, 89, 87, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "가후", null, 0, null, 82, 96, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "곽가", null, 0, null, 90, 95, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "악환", null, 0, null, 75, 40, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "곽사", null, 0, null, 76, 54, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "악취", null, 0, null, 87, 44, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "곽준", null, 0, null, 67, 88, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "학소", null, 0, null, 52, 57, 7, 0, 160, 300, null, null],
|
||||||
|
[0, "악진", null, 0, null, 60, 35, 74, 0, 160, 300, null, null],
|
||||||
|
[0, "곽도", null, 0, null, 78, 90, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "학맹", null, 0, null, 78, 43, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "곽유지", null, 0, null, 82, 81, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "곽익", null, 0, null, 67, 71, 11, 0, 160, 300, null, null],
|
||||||
|
[0, "곽회", null, 0, null, 50, 74, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "하후위", null, 0, null, 69, 47, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "하후연", null, 0, null, 45, 28, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "하후은", null, 0, null, 87, 52, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "하후화", null, 0, null, 90, 86, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "하후혜", null, 0, null, 90, 88, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "하후현", null, 0, null, 86, 90, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "하후상", null, 0, null, 61, 65, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "하후덕", null, 0, null, 71, 57, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "하후돈", null, 0, null, 49, 18, 32, 0, 160, 300, null, null, "부모님께 받은 신체 쫀맛탱!"],
|
||||||
|
[0, "하후패", null, 0, null, 61, 35, 77, 0, 160, 300, null, null],
|
||||||
|
[0, "하후무", null, 0, null, 98, 100, 73, 0, 160, 300, null, null, "나와 싸워 이길 자 누구인가!"],
|
||||||
|
[0, "가충", null, 0, null, 86, 89, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "하진", null, 0, null, 89, 90, 45, 0, 160, 300, null, null, "돼지 잡던 내가 대장군?"],
|
||||||
|
[0, "화웅", null, 0, null, 62, 30, 75, 0, 160, 300, null, null],
|
||||||
|
[0, "한윤", null, 0, null, 84, 81, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "관우", null, 0, null, 44, 21, 44, 0, 160, 300, null, null, "차가 식기 전에 목을 베이고 오겠소!"],
|
||||||
|
[0, "환계", null, 0, null, 85, 84, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "관해", null, 0, null, 70, 48, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "관구검", null, 0, null, 56, 44, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "한현", null, 0, null, 96, 51, 97, 0, 160, 300, null, null],
|
||||||
|
[0, "한호", null, 0, null, 67, 80, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "관흥", null, 0, null, 64, 46, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "관색", null, 0, null, 66, 47, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "한수", null, 0, null, 62, 82, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "한숭", null, 0, null, 85, 85, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "관정", null, 0, null, 84, 88, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "한섬", null, 0, null, 71, 44, 94, 0, 160, 300, null, null],
|
||||||
|
[0, "감택", null, 0, null, 84, 70, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "한충", null, 0, null, 76, 53, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "한당", null, 0, null, 64, 45, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "한덕", null, 0, null, 77, 54, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "감녕", null, 0, null, 48, 45, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "한복", null, 0, null, 82, 87, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "관평", null, 0, null, 62, 38, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "간옹", null, 0, null, 93, 91, 45, 0, 160, 300, null, null, "삼대장 간손미에서 간을 맡고 있습니다"],
|
||||||
|
[0, "안량", null, 0, null, 52, 44, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "위연", null, 0, null, 49, 30, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "국의", null, 0, null, 56, 52, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "희지재", null, 0, null, 77, 85, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "위속", null, 0, null, 73, 52, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "위유", null, 0, null, 89, 89, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "우금2", null, 0, null, 68, 51, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "우보", null, 0, null, 82, 60, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "강유", null, 0, null, 48, 58, 27, 0, 160, 300, null, null, "제갈량 너무 멍청하네 진짜"],
|
||||||
|
[0, "공지", null, 0, null, 87, 88, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "교유", null, 0, null, 76, 51, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "공도", null, 0, null, 81, 50, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "허공", null, 0, null, 86, 44, 76, 0, 160, 300, null, null],
|
||||||
|
[0, "허정", null, 0, null, 87, 79, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "허저", null, 0, null, 86, 23, 96, 0, 160, 300, null, null, "조조군의 지혜주머니 호치님이시다"],
|
||||||
|
[0, "허유", null, 0, null, 74, 89, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "기령", null, 0, null, 55, 46, 69, 0, 160, 300, null, null],
|
||||||
|
[0, "김의", null, 0, null, 88, 82, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "김배삼결", null, 0, null, 76, 44, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "김선", null, 0, null, 88, 52, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "우번", null, 0, null, 84, 87, 33, 0, 160, 300, null, null],
|
||||||
|
[0, "형도영", null, 0, null, 71, 41, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "엄안", null, 0, null, 58, 37, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "엄망", null, 0, null, 72, 49, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "엄준", null, 0, null, 86, 78, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "엄정", null, 0, null, 90, 85, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "엄백호", null, 0, null, 96, 69, 99, 0, 160, 300, null, null, "내가 바로 동오의 엄덕왕이다!"],
|
||||||
|
[0, "엄여", null, 0, null, 90, 52, 96, 0, 160, 300, null, null, "내가 바로 동오의 엄덕왕 동생이다!"],
|
||||||
|
[0, "오의", null, 0, null, 61, 47, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "황개", null, 0, null, 60, 43, 76, 0, 160, 300, null, null, "주유 이 미친 놈아!"],
|
||||||
|
[0, "고간", null, 0, null, 66, 64, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "황권", null, 0, null, 65, 66, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "고유", null, 0, null, 83, 87, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "고순", null, 0, null, 53, 31, 60, 0, 160, 300, null, null, "함진영 그거 망한 지 오래됐음"],
|
||||||
|
[0, "고상", null, 0, null, 72, 52, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "고승", null, 0, null, 73, 57, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "후성", null, 0, null, 66, 55, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "후선", null, 0, null, 77, 44, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "황조", null, 0, null, 59, 51, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "공손월", null, 0, null, 66, 48, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "공손연", null, 0, null, 75, 40, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "공손공", null, 0, null, 89, 83, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "공손강", null, 0, null, 68, 44, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "공손찬", null, 0, null, 54, 38, 68, 0, 160, 300, null, null, "백마 어떻게 타요?"],
|
||||||
|
[0, "공손속", null, 0, null, 77, 42, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "공손도", null, 0, null, 73, 49, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "공손범", null, 0, null, 67, 41, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "황충", null, 0, null, 52, 34, 65, 0, 160, 300, null, null],
|
||||||
|
[0, "고정", null, 0, null, 85, 57, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "고패", null, 0, null, 74, 70, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "황보숭", null, 0, null, 49, 29, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "공융", null, 0, null, 91, 86, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "고람", null, 0, null, 64, 38, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "오경", null, 0, null, 71, 43, 75, 0, 160, 300, null, null],
|
||||||
|
[0, "호거아", null, 0, null, 70, 48, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "호진", null, 0, null, 75, 46, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "올돌골", null, 0, null, 96, 54, 99, 0, 160, 300, null, null, "남만이 낳은 천재 올돌골님이시다"],
|
||||||
|
[0, "호반", null, 0, null, 85, 41, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "오반", null, 0, null, 66, 49, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "고옹", null, 0, null, 88, 82, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "오란", null, 0, null, 72, 50, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "채화", null, 0, null, 91, 41, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "채중", null, 0, null, 90, 46, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "채모", null, 0, null, 70, 45, 63, 0, 160, 300, null, null],
|
||||||
|
[0, "착융", null, 0, null, 83, 51, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "사마의", null, 0, null, 41, 47, 42, 0, 160, 300, null, null, "조조 걔 별 거 아님"],
|
||||||
|
[0, "사마염", null, 0, null, 71, 81, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "사마사", null, 0, null, 56, 76, 41, 0, 160, 300, null, null, "위나라 조진 썰 푼다"],
|
||||||
|
[0, "사마소", null, 0, null, 55, 83, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "사마부", null, 0, null, 70, 83, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "사마랑", null, 0, null, 80, 39, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "사마가", null, 0, null, 74, 26, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "주흔", null, 0, null, 75, 89, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "주앙", null, 0, null, 66, 55, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "주지", null, 0, null, 67, 45, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "주창", null, 0, null, 72, 43, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "주태", null, 0, null, 56, 30, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "주방", null, 0, null, 88, 66, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "주유", null, 0, null, 43, 22, 43, 0, 160, 300, null, null, "동남풍이 부는구나. 황개 몸에 불을 질러라."],
|
||||||
|
[0, "주환", null, 0, null, 53, 36, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "주거", null, 0, null, 63, 83, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "축융", null, 0, null, 98, 65, 95, 0, 160, 300, null, null],
|
||||||
|
[0, "주준", null, 0, null, 51, 83, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "주연", null, 0, null, 54, 55, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "주치", null, 0, null, 69, 56, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "주포", null, 0, null, 72, 57, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "주령", null, 0, null, 62, 47, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "순욱", null, 0, null, 62, 72, 33, 0, 160, 300, null, null],
|
||||||
|
[0, "순우경", null, 0, null, 62, 74, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "순심", null, 0, null, 85, 86, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "순유", null, 0, null, 60, 75, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "장완", null, 0, null, 62, 76, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "종회", null, 0, null, 52, 78, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "장간", null, 0, null, 81, 84, 64, 0, 160, 300, null, null],
|
||||||
|
[0, "장의거", null, 0, null, 69, 91, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "장흠", null, 0, null, 62, 45, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "장제3", null, 0, null, 78, 90, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "초주", null, 0, null, 84, 87, 23, 0, 160, 300, null, null],
|
||||||
|
[0, "초촉", null, 0, null, 75, 64, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "향총", null, 0, null, 64, 84, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "종요", null, 0, null, 61, 86, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "향랑", null, 0, null, 82, 82, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "서영", null, 0, null, 48, 50, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈각", null, 0, null, 68, 83, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈근", null, 0, null, 65, 26, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈균", null, 0, null, 81, 55, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈탄", null, 0, null, 68, 86, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈량", null, 0, null, 42, 14, 22, 0, 160, 300, null, null, "헤헤헤…제갈량 바보 아니다. 엄마가 바보 아니라 그랬다."],
|
||||||
|
[0, "서황", null, 0, null, 45, 26, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "서서", null, 0, null, 46, 26, 21, 0, 160, 300, null, null, "제갈량 어디 가서 나랑 동문이라고 하지마라"],
|
||||||
|
[0, "서성", null, 0, null, 54, 59, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "서막", null, 0, null, 85, 80, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "신의", null, 0, null, 85, 50, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "신탐", null, 0, null, 84, 58, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "심배", null, 0, null, 60, 60, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "신비", null, 0, null, 88, 76, 51, 0, 160, 300, null, null, "뭘 봐? 인체 신비해지고 싶냐"],
|
||||||
|
[0, "신평", null, 0, null, 71, 45, 63, 0, 160, 300, null, null],
|
||||||
|
[0, "진복", null, 0, null, 89, 83, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "진랑", null, 0, null, 82, 60, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "휴고", null, 0, null, 77, 59, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "추단", null, 0, null, 79, 46, 76, 0, 160, 300, null, null],
|
||||||
|
[0, "성의", null, 0, null, 66, 58, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "성공영", null, 0, null, 67, 38, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "설종", null, 0, null, 76, 74, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "단경", null, 0, null, 69, 52, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "전종", null, 0, null, 72, 85, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "조예", null, 0, null, 88, 88, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "조휴", null, 0, null, 56, 52, 72, 0, 160, 300, null, null],
|
||||||
|
[0, "송헌", null, 0, null, 72, 53, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "조앙", null, 0, null, 62, 40, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "조홍", null, 0, null, 60, 55, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "조순", null, 0, null, 55, 37, 77, 0, 160, 300, null, null],
|
||||||
|
[0, "조창", null, 0, null, 54, 39, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "조식", null, 0, null, 85, 93, 14, 0, 160, 300, null, null],
|
||||||
|
[0, "조진", null, 0, null, 52, 56, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "조인", null, 0, null, 46, 40, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "조성", null, 0, null, 86, 66, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "조조", null, 0, null, 40, 17, 13, 0, 160, 300, null, null, "미망인이 뭐예요?"],
|
||||||
|
[0, "조충", null, 0, null, 87, 82, 36, 0, 160, 300, null, null],
|
||||||
|
[0, "장패", null, 0, null, 62, 44, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "조비", null, 0, null, 65, 36, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "조표", null, 0, null, 86, 51, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "저수", null, 0, null, 54, 31, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "소비", null, 0, null, 71, 85, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "조무", null, 0, null, 70, 49, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "손환", null, 0, null, 58, 64, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "손견", null, 0, null, 46, 45, 22, 0, 160, 300, null, null, "강동의 고양이 손견이 간다"],
|
||||||
|
[0, "손건", null, 0, null, 96, 93, 51, 0, 160, 300, null, null, "삼대장 간손미에서 손을 맡고 있습니다"],
|
||||||
|
[0, "손권", null, 0, null, 54, 49, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "손교", null, 0, null, 63, 58, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "손책", null, 0, null, 47, 26, 36, 0, 160, 300, null, null],
|
||||||
|
[0, "손소", null, 0, null, 58, 61, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "손정", null, 0, null, 74, 77, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "손중", null, 0, null, 78, 49, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "손등", null, 0, null, 78, 33, 61, 0, 160, 300, null, null],
|
||||||
|
[0, "손유", null, 0, null, 63, 50, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "손익", null, 0, null, 73, 57, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "손례", null, 0, null, 62, 39, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "태사자", null, 0, null, 46, 22, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "대래동주", null, 0, null, 89, 57, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "대릉", null, 0, null, 70, 55, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "타사대왕", null, 0, null, 78, 27, 70, 0, 160, 300, null, null],
|
||||||
|
[0, "담웅", null, 0, null, 82, 57, 96, 0, 160, 300, null, null],
|
||||||
|
[0, "장윤", null, 0, null, 68, 56, 94, 0, 160, 300, null, null],
|
||||||
|
[0, "조운", null, 0, null, 42, 22, 13, 0, 160, 300, null, null, "아두야 나 좀 살려줘"],
|
||||||
|
[0, "장위", null, 0, null, 66, 54, 95, 0, 160, 300, null, null],
|
||||||
|
[0, "장영", null, 0, null, 65, 56, 69, 0, 160, 300, null, null],
|
||||||
|
[0, "장연", null, 0, null, 64, 49, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "장횡", null, 0, null, 81, 30, 70, 0, 160, 300, null, null],
|
||||||
|
[0, "장온", null, 0, null, 88, 79, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "장개", null, 0, null, 96, 54, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "장각", null, 0, null, 53, 30, 50, 0, 160, 300, null, null],
|
||||||
|
[0, "장기", null, 0, null, 66, 72, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "장의", null, 0, null, 61, 85, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "장훈", null, 0, null, 68, 62, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "장굉", null, 0, null, 86, 88, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "장합", null, 0, null, 48, 22, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "조홍2", null, 0, null, 74, 68, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "장제2", null, 0, null, 70, 74, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "장수", null, 0, null, 60, 57, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "장소", null, 0, null, 59, 87, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "장송", null, 0, null, 80, 64, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "장임", null, 0, null, 55, 46, 76, 0, 160, 300, null, null],
|
||||||
|
[0, "장제", null, 0, null, 73, 37, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "장막", null, 0, null, 88, 87, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "조범", null, 0, null, 92, 90, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "장비", null, 0, null, 43, 2, 36, 0, 160, 300, null, null, "덤비지 마….제발"],
|
||||||
|
[0, "장포", null, 0, null, 62, 46, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "장보", null, 0, null, 57, 80, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "장만성", null, 0, null, 65, 49, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "장양", null, 0, null, 68, 50, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "장익", null, 0, null, 65, 85, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "장료", null, 0, null, 44, 26, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "장량", null, 0, null, 62, 50, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "조루", null, 0, null, 70, 91, 62, 0, 160, 300, null, null],
|
||||||
|
[0, "장로", null, 0, null, 75, 98, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "진횡", null, 0, null, 76, 57, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "진응", null, 0, null, 78, 58, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "진기", null, 0, null, 82, 65, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "진궁", null, 0, null, 56, 85, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "진교", null, 0, null, 79, 83, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "진군", null, 0, null, 88, 13, 65, 0, 160, 300, null, null],
|
||||||
|
[0, "진규", null, 0, null, 80, 76, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "진식", null, 0, null, 70, 59, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "진진", null, 0, null, 92, 90, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "진태", null, 0, null, 54, 72, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "진등", null, 0, null, 61, 81, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "진도", null, 0, null, 58, 52, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "진무", null, 0, null, 64, 43, 97, 0, 160, 300, null, null],
|
||||||
|
[0, "진란", null, 0, null, 74, 51, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "진림", null, 0, null, 95, 11, 65, 0, 160, 300, null, null],
|
||||||
|
[0, "정욱", null, 0, null, 64, 91, 36, 0, 160, 300, null, null],
|
||||||
|
[0, "정원지", null, 0, null, 71, 56, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "정은", null, 0, null, 71, 57, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "정원", null, 0, null, 70, 54, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "정보", null, 0, null, 56, 11, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "정봉", null, 0, null, 59, 38, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "전위", null, 0, null, 41, 22, 48, 0, 160, 300, null, null, "적이 열 보 안으로 들어오거든 나부터 튄다"],
|
||||||
|
[0, "전해", null, 0, null, 72, 55, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "전주", null, 0, null, 74, 89, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "전풍", null, 0, null, 58, 67, 24, 0, 160, 300, null, null, "아 원소 저거 진짜 사람 아니네"],
|
||||||
|
[0, "전예", null, 0, null, 47, 55, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "동윤", null, 0, null, 90, 82, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "동화", null, 0, null, 83, 86, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "등애", null, 0, null, 48, 47, 26, 0, 160, 300, null, null, "이 산이 아닌개벼…"],
|
||||||
|
[0, "도겸", null, 0, null, 89, 83, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "등현", null, 0, null, 79, 67, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "등지", null, 0, null, 67, 68, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "동습", null, 0, null, 68, 45, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "동승", null, 0, null, 84, 87, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "동소", null, 0, null, 86, 85, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "동탁", null, 0, null, 49, 43, 73, 0, 160, 300, null, null],
|
||||||
|
[0, "동도나", null, 0, null, 72, 57, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "동민", null, 0, null, 89, 51, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "등무", null, 0, null, 79, 55, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "두기", null, 0, null, 66, 17, 62, 0, 160, 300, null, null],
|
||||||
|
[0, "두예", null, 0, null, 44, 71, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "배원소", null, 0, null, 90, 45, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "마완", null, 0, null, 69, 56, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "마휴", null, 0, null, 72, 57, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "파재", null, 0, null, 66, 56, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "마준", null, 0, null, 82, 88, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "마속", null, 0, null, 69, 51, 26, 0, 160, 300, null, null],
|
||||||
|
[0, "마대", null, 0, null, 61, 45, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "마충", null, 0, null, 62, 48, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "마초", null, 0, null, 54, 33, 46, 0, 160, 300, null, null, "서량의 븅마초 나가신다"],
|
||||||
|
[0, "마철", null, 0, null, 70, 48, 77, 0, 160, 300, null, null],
|
||||||
|
[0, "마등", null, 0, null, 55, 30, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "마량", null, 0, null, 87, 17, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "반준", null, 0, null, 79, 91, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "반장", null, 0, null, 64, 50, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "번조", null, 0, null, 74, 57, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "번능", null, 0, null, 71, 19, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "반봉", null, 0, null, 84, 53, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "비의", null, 0, null, 58, 84, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "비연", null, 0, null, 80, 62, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "비시", null, 0, null, 82, 42, 75, 0, 160, 300, null, null],
|
||||||
|
[0, "미축", null, 0, null, 90, 91, 52, 0, 160, 300, null, null, "돈도 많고 싸움도 잘하는 간손미 에이스 미축입니다"],
|
||||||
|
[0, "미방", null, 0, null, 86, 50, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "비요", null, 0, null, 70, 88, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "무안국", null, 0, null, 70, 51, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "풍습", null, 0, null, 68, 59, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "부사인", null, 0, null, 94, 47, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "부첨", null, 0, null, 67, 45, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "부손", null, 0, null, 87, 90, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "문앙", null, 0, null, 64, 34, 75, 0, 160, 300, null, null],
|
||||||
|
[0, "문흠", null, 0, null, 66, 61, 26, 0, 160, 300, null, null],
|
||||||
|
[0, "문추", null, 0, null, 53, 26, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "문빙", null, 0, null, 52, 35, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "변희", null, 0, null, 84, 50, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "망아장", null, 0, null, 90, 51, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "봉기", null, 0, null, 84, 90, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "방희", null, 0, null, 80, 82, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "법정", null, 0, null, 58, 46, 11, 0, 160, 300, null, null],
|
||||||
|
[0, "방통", null, 0, null, 51, 43, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "방덕", null, 0, null, 51, 26, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "포륭", null, 0, null, 82, 54, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "목순", null, 0, null, 88, 33, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "목록대왕", null, 0, null, 93, 59, 99, 0, 160, 300, null, null, "코끼리만 있으면 너도 한 방 나도 한 방"],
|
||||||
|
[0, "보즐", null, 0, null, 57, 19, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "만총", null, 0, null, 52, 16, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "모개", null, 0, null, 77, 81, 20, 0, 160, 300, null, null],
|
||||||
|
[0, "맹획", null, 0, null, 59, 12, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "맹체", null, 0, null, 65, 85, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "맹우", null, 0, null, 90, 9, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "유섭", null, 0, null, 78, 51, 96, 0, 160, 300, null, null],
|
||||||
|
[0, "양부", null, 0, null, 78, 86, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "옹개", null, 0, null, 67, 55, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "양의", null, 0, null, 72, 20, 58, 0, 160, 300, null, null],
|
||||||
|
[0, "양호", null, 0, null, 46, 51, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "양홍", null, 0, null, 92, 87, 13, 0, 160, 300, null, null],
|
||||||
|
[0, "양앙", null, 0, null, 72, 58, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "양추", null, 0, null, 88, 55, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "양수", null, 0, null, 92, 91, 1, 0, 160, 300, null, null],
|
||||||
|
[0, "양추2", null, 0, null, 73, 56, 96, 0, 160, 300, null, null],
|
||||||
|
[0, "양송", null, 0, null, 100, 65, 98, 0, 160, 300, null, null, "군신 악의만이 나와 비견될만 하다"],
|
||||||
|
[0, "양임", null, 0, null, 70, 42, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "양조", null, 0, null, 87, 79, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "양백", null, 0, null, 90, 81, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "양부2", null, 0, null, 73, 90, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "양봉", null, 0, null, 74, 75, 39, 0, 160, 300, null, null],
|
||||||
|
[0, "양봉2", null, 0, null, 86, 28, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "뇌동", null, 0, null, 71, 52, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "뇌박", null, 0, null, 78, 60, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "이이", null, 0, null, 77, 22, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "이회", null, 0, null, 61, 82, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "이각", null, 0, null, 71, 58, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "육항", null, 0, null, 46, 61, 27, 0, 160, 300, null, null],
|
||||||
|
[0, "육적", null, 0, null, 60, 61, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "육손", null, 0, null, 45, 69, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "이엄", null, 0, null, 57, 46, 77, 0, 160, 300, null, null],
|
||||||
|
[0, "이유", null, 0, null, 69, 84, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "이숙", null, 0, null, 87, 41, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "이통", null, 0, null, 67, 49, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "이전", null, 0, null, 62, 40, 61, 0, 160, 300, null, null],
|
||||||
|
[0, "이풍", null, 0, null, 71, 56, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "유언", null, 0, null, 79, 82, 50, 0, 160, 300, null, null],
|
||||||
|
[0, "유괴", null, 0, null, 69, 57, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "유기", null, 0, null, 88, 88, 37, 0, 160, 300, null, null],
|
||||||
|
[0, "유우", null, 0, null, 78, 87, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "유훈", null, 0, null, 90, 37, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "유현", null, 0, null, 86, 44, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "유순", null, 0, null, 77, 34, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "유장", null, 0, null, 99, 90, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "유심", null, 0, null, 80, 82, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "유선", null, 0, null, 97, 65, 96, 0, 160, 300, null, null, "촉은 제갈량이 다 말아먹었다"],
|
||||||
|
[0, "유종", null, 0, null, 86, 88, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "유도", null, 0, null, 85, 87, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "유파", null, 0, null, 81, 38, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "유반", null, 0, null, 71, 54, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "유비", null, 0, null, 52, 18, 23, 0, 160, 300, null, null, "돗자리 좀 사주세요"],
|
||||||
|
[0, "유표", null, 0, null, 82, 81, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "유복", null, 0, null, 76, 81, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "유벽", null, 0, null, 70, 58, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "유봉", null, 0, null, 65, 51, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "유엽", null, 0, null, 84, 65, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "유요", null, 0, null, 78, 63, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "여위황", null, 0, null, 82, 57, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "요화", null, 0, null, 67, 54, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "양흥", null, 0, null, 79, 45, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "양습", null, 0, null, 67, 80, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "양서", null, 0, null, 84, 78, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "능조", null, 0, null, 65, 29, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "능통", null, 0, null, 57, 11, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "여개", null, 0, null, 87, 80, 53, 0, 160, 300, null, null],
|
||||||
|
[0, "여건", null, 0, null, 83, 40, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "여광", null, 0, null, 84, 41, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "여상", null, 0, null, 86, 39, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "여대", null, 0, null, 60, 69, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "여범", null, 0, null, 67, 86, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "여포", null, 0, null, 51, 10, 100, 0, 160, 300, null, null, "이기기 위한 전략만 내어드리겠습니다."],
|
||||||
|
[0, "여몽", null, 0, null, 49, 31, 10, 0, 160, 300, null, null],
|
||||||
|
[0, "윤직", null, 0, null, 88, 88, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "냉포", null, 0, null, 69, 48, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "누규", null, 0, null, 88, 87, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "노숙", null, 0, null, 51, 64, 17, 0, 160, 300, null, null],
|
||||||
|
[0, "노식", null, 0, null, 54, 77, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "범강", null, 0, null, 89, 89, 34, 0, 160, 300, null, null],
|
||||||
|
[0, "장달", null, 0, null, 87, 84, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "규람", null, 0, null, 85, 50, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "대원", null, 0, null, 82, 88, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "왕기", null, 0, null, 59, 76, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "왕상", null, 0, null, 87, 89, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "왕돈", null, 0, null, 80, 54, 94, 0, 160, 300, null, null],
|
||||||
|
[0, "악침", null, 0, null, 67, 55, 97, 0, 160, 300, null, null],
|
||||||
|
[0, "하제", null, 0, null, 57, 79, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "환범", null, 0, null, 81, 89, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "견초", null, 0, null, 68, 51, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "고당륭", null, 0, null, 90, 90, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "오찬", null, 0, null, 72, 91, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "호질", null, 0, null, 67, 88, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "오질", null, 0, null, 90, 89, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "호준", null, 0, null, 61, 54, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "고담", null, 0, null, 87, 87, 33, 0, 160, 300, null, null],
|
||||||
|
[0, "최림", null, 0, null, 84, 85, 14, 0, 160, 300, null, null],
|
||||||
|
[0, "사마망", null, 0, null, 62, 82, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "주이", null, 0, null, 70, 57, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "전단", null, 0, null, 73, 76, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "조우", null, 0, null, 89, 83, 23, 0, 160, 300, null, null],
|
||||||
|
[0, "조상", null, 0, null, 81, 87, 40, 0, 160, 300, null, null],
|
||||||
|
[0, "조방", null, 0, null, 90, 86, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "태사향", null, 0, null, 83, 52, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "장휴", null, 0, null, 77, 43, 66, 0, 160, 300, null, null],
|
||||||
|
[0, "장호", null, 0, null, 65, 56, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "조광", null, 0, null, 73, 59, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "장집", null, 0, null, 64, 81, 50, 0, 160, 300, null, null],
|
||||||
|
[0, "장승", null, 0, null, 63, 85, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "장소2", null, 0, null, 87, 84, 19, 0, 160, 300, null, null],
|
||||||
|
[0, "조통", null, 0, null, 72, 53, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "진표", null, 0, null, 74, 88, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "정무", null, 0, null, 84, 85, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "정봉2", null, 0, null, 74, 22, 74, 0, 160, 300, null, null],
|
||||||
|
[0, "전만", null, 0, null, 89, 11, 67, 0, 160, 300, null, null],
|
||||||
|
[0, "마균", null, 0, null, 88, 83, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "방회", null, 0, null, 71, 55, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "낙통", null, 0, null, 64, 82, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "육개", null, 0, null, 75, 79, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "유찬", null, 0, null, 62, 59, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "유소", null, 0, null, 72, 87, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "요립", null, 0, null, 88, 85, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "여거", null, 0, null, 62, 89, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈첨", null, 0, null, 70, 83, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "손휴", null, 0, null, 83, 90, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "극정", null, 0, null, 90, 77, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "호분", null, 0, null, 69, 54, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "손량", null, 0, null, 88, 84, 30, 0, 160, 300, null, null],
|
||||||
|
[0, "마막", null, 0, null, 96, 98, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "손호", null, 0, null, 89, 43, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "조모", null, 0, null, 86, 39, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "조환", null, 0, null, 90, 42, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "사마유", null, 0, null, 69, 86, 55, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈상", null, 0, null, 76, 51, 78, 0, 160, 300, null, null],
|
||||||
|
[0, "손화", null, 0, null, 87, 71, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "염우", null, 0, null, 88, 49, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "왕경", null, 0, null, 73, 81, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "왕혼", null, 0, null, 66, 59, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "곽혁", null, 0, null, 87, 81, 30, 0, 160, 300, null, null],
|
||||||
|
[0, "가범", null, 0, null, 80, 83, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "서질", null, 0, null, 72, 47, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "손준", null, 0, null, 76, 40, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "손침", null, 0, null, 82, 85, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "우사", null, 0, null, 79, 86, 56, 0, 160, 300, null, null],
|
||||||
|
[0, "진건", null, 0, null, 68, 49, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "동궐", null, 0, null, 75, 81, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "당자", null, 0, null, 79, 49, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "등충", null, 0, null, 64, 40, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "황숭", null, 0, null, 73, 70, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "화핵", null, 0, null, 80, 76, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "허의", null, 0, null, 89, 46, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "송겸", null, 0, null, 74, 42, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "호제", null, 0, null, 83, 81, 52, 0, 160, 300, null, null],
|
||||||
|
[0, "나헌", null, 0, null, 54, 78, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "노숙2", null, 0, null, 67, 87, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "구성", null, 0, null, 77, 40, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "어부라", null, 0, null, 78, 42, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "아하소과", null, 0, null, 89, 54, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "가비능", null, 0, null, 63, 41, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "구력거", null, 0, null, 60, 42, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "강단", null, 0, null, 75, 47, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "황란", null, 0, null, 77, 45, 76, 0, 160, 300, null, null],
|
||||||
|
[0, "호주천", null, 0, null, 70, 49, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "종리목", null, 0, null, 56, 79, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "제갈교", null, 0, null, 78, 83, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "답돈", null, 0, null, 56, 48, 79, 0, 160, 300, null, null],
|
||||||
|
[0, "반임", null, 0, null, 74, 41, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "보도근", null, 0, null, 76, 57, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "미당대왕", null, 0, null, 81, 51, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "유표2", null, 0, null, 67, 56, 82, 0, 160, 300, null, null],
|
||||||
|
[0, "루반", null, 0, null, 75, 44, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "손관", null, 0, null, 68, 42, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "곽석", null, 0, null, 81, 49, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "주조", null, 0, null, 77, 42, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "장거", null, 0, null, 61, 45, 84, 0, 160, 300, null, null],
|
||||||
|
[0, "장순", null, 0, null, 67, 49, 80, 0, 160, 300, null, null],
|
||||||
|
[0, "철리길", null, 0, null, 63, 50, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "주삭", null, 0, null, 90, 52, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "황월영", null, 0, null, 94, 97, 58, 0, 160, 300, null, null, "어쩌다 저런 걸 남편이라고…."],
|
||||||
|
[0, "채염", null, 0, null, 98, 99, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "소교", null, 0, null, 97, 95, 52, 0, 160, 300, null, null, "주유 너무 무능하다."],
|
||||||
|
[0, "신헌영", null, 0, null, 85, 95, 60, 0, 160, 300, null, null],
|
||||||
|
[0, "손상향", null, 0, null, 98, 58, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "대교", null, 0, null, 98, 90, 52, 0, 160, 300, null, null, "손책 너무 무능하다."],
|
||||||
|
[0, "초선", null, 0, null, 99, 98, 59, 0, 160, 300, null, null, "동탁 이리와봐 한대만 맞자"],
|
||||||
|
[0, "교모", null, 0, null, 86, 90, 31, 0, 160, 300, null, null],
|
||||||
|
[0, "관구수", null, 0, null, 82, 28, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "관구전", null, 0, null, 77, 88, 51, 0, 160, 300, null, null],
|
||||||
|
[0, "원유", null, 0, null, 84, 80, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "왕광", null, 0, null, 75, 86, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "신창", null, 0, null, 85, 84, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "사마주", null, 0, null, 79, 86, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "양제", null, 0, null, 73, 82, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "성만", null, 0, null, 79, 42, 90, 0, 160, 300, null, null],
|
||||||
|
[0, "오연", null, 0, null, 74, 47, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "맹충", null, 0, null, 90, 72, 38, 0, 160, 300, null, null],
|
||||||
|
[0, "잠혼", null, 0, null, 100, 99, 58, 0, 160, 300, null, null, "이 몸이 만부부당이라 불리는 맹장 잠혼이다."],
|
||||||
|
[0, "사정", null, 0, null, 76, 44, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "심영", null, 0, null, 70, 43, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "도준", null, 0, null, 75, 44, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "만욱", null, 0, null, 89, 85, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "오언", null, 0, null, 64, 49, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "위막", null, 0, null, 86, 58, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "시삭", null, 0, null, 88, 55, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "전속", null, 0, null, 90, 40, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "장화", null, 0, null, 84, 83, 32, 0, 160, 300, null, null],
|
||||||
|
[0, "오거", null, 0, null, 90, 19, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "추정", null, 0, null, 70, 84, 24, 0, 160, 300, null, null],
|
||||||
|
[0, "장특", null, 0, null, 67, 86, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "곽마", null, 0, null, 72, 49, 83, 0, 160, 300, null, null],
|
||||||
|
[0, "석포", null, 0, null, 71, 49, 81, 0, 160, 300, null, null],
|
||||||
|
[0, "견홍", null, 0, null, 70, 56, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "한거자", null, 0, null, 89, 81, 29, 0, 160, 300, null, null],
|
||||||
|
[0, "휴원진", null, 0, null, 88, 22, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "곽원", null, 0, null, 74, 84, 47, 0, 160, 300, null, null],
|
||||||
|
[0, "계옹", null, 0, null, 77, 87, 28, 0, 160, 300, null, null],
|
||||||
|
[0, "이부", null, 0, null, 89, 84, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "왕업", null, 0, null, 87, 84, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "좌혁", null, 0, null, 78, 44, 89, 0, 160, 300, null, null],
|
||||||
|
[0, "화타", null, 0, null, 83, 96, 37, 0, 160, 300, null, null, "가시는 길 한 방에 편안하게"],
|
||||||
|
[0, "사마휘", null, 0, null, 85, 84, 28, 0, 160, 300, null, null, "공명과 방통은 아무 짝에도 쓸모가 없습니다"],
|
||||||
|
[0, "우길", null, 0, null, 87, 85, 30, 0, 160, 300, null, null],
|
||||||
|
[0, "헌제", null, 0, null, 88, 92, 52, 0, 160, 300, null, null, "한 황실의 미래는 내 알바 아니다"],
|
||||||
|
[0, "백기", null, 0, null, 40, 42, 61, 0, 160, 300, null, null],
|
||||||
|
[0, "한신", null, 0, null, 40, 56, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "악비", null, 0, null, 41, 48, 20, 0, 160, 300, null, null],
|
||||||
|
[0, "항적", null, 0, null, 41, 18, 35, 0, 160, 300, null, null],
|
||||||
|
[0, "악의", null, 0, null, 42, 27, 13, 0, 160, 300, null, null],
|
||||||
|
[0, "영정", null, 0, null, 43, 25, 48, 0, 160, 300, null, null],
|
||||||
|
[0, "강상", null, 0, null, 46, 40, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "전단2", null, 0, null, 44, 55, 25, 0, 160, 300, null, null],
|
||||||
|
[0, "이목", null, 0, null, 44, 13, 42, 0, 160, 300, null, null],
|
||||||
|
[0, "염파", null, 0, null, 43, 9, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "왕전", null, 0, null, 46, 37, 16, 0, 160, 300, null, null],
|
||||||
|
[0, "오기", null, 0, null, 46, 74, 25, 0, 160, 300, null, null],
|
||||||
|
[0, "곽거병", null, 0, null, 47, 16, 87, 0, 160, 300, null, null],
|
||||||
|
[0, "영포", null, 0, null, 58, 22, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "이신", null, 0, null, 59, 37, 57, 0, 160, 300, null, null],
|
||||||
|
[0, "몽념", null, 0, null, 53, 34, 25, 0, 160, 300, null, null],
|
||||||
|
[0, "전기", null, 0, null, 60, 62, 36, 0, 160, 300, null, null],
|
||||||
|
[0, "극신", null, 0, null, 64, 27, 88, 0, 160, 300, null, null],
|
||||||
|
[0, "항연", null, 0, null, 51, 38, 22, 0, 160, 300, null, null],
|
||||||
|
[0, "인상여", null, 0, null, 71, 14, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "장자방", null, 0, null, 68, 43, 27, 0, 160, 300, null, null],
|
||||||
|
[0, "관이오", null, 0, null, 55, 76, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "손빈", null, 0, null, 57, 38, 12, 0, 160, 300, null, null],
|
||||||
|
[0, "소진", null, 0, null, 50, 23, 14, 0, 160, 300, null, null],
|
||||||
|
[0, "범증", null, 0, null, 72, 86, 46, 0, 160, 300, null, null],
|
||||||
|
[0, "장의2", null, 0, null, 65, 87, 17, 0, 160, 300, null, null],
|
||||||
|
[0, "공구", null, 0, null, 72, 70, 49, 0, 160, 300, null, null],
|
||||||
|
[0, "소하", null, 0, null, 84, 23, 8, 0, 160, 300, null, null],
|
||||||
|
[0, "한비", null, 0, null, 90, 81, 43, 0, 160, 300, null, null],
|
||||||
|
[0, "이사", null, 0, null, 42, 16, 45, 0, 160, 300, null, null],
|
||||||
|
[0, "전문", null, 0, null, 61, 73, 41, 0, 160, 300, null, null],
|
||||||
|
[0, "황헐", null, 0, null, 59, 22, 42, 0, 160, 300, null, null, "헐…"],
|
||||||
|
[0, "황호", null, 0, null, 98, 100, 67, 0, 160, 300, null, null],
|
||||||
|
[0, "방난", null, 0, null, 52, 25, 44, 0, 160, 300, null, null],
|
||||||
|
[0, "개섭", null, 0, null, 89, 33, 86, 0, 160, 300, null, null],
|
||||||
|
[0, "형가", null, 0, null, 88, 41, 91, 0, 160, 300, null, null],
|
||||||
|
[0, "유방", null, 0, null, 50, 24, 15, 0, 160, 300, null, null],
|
||||||
|
[0, "하리", null, 0, null, 98, 96, 68, 0, 160, 300, null, null],
|
||||||
|
[0, "헹이", null, 0, null, 93, 59, 98, 0, 160, 300, null, null],
|
||||||
|
[0, "나나", null, 0, null, 94, 53, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "장임2", null, 0, null, 90, 89, 71, 0, 160, 300, null, null],
|
||||||
|
[0, "하야미", null, 0, null, 96, 67, 85, 0, 160, 300, null, null],
|
||||||
|
[0, "이시리스", null, 0, null, 94, 86, 54, 0, 160, 300, null, null],
|
||||||
|
[0, "연채홍", null, 0, null, 97, 47, 96, 0, 160, 300, null, null],
|
||||||
|
[0, "임사영", null, 0, null, 1, 4, 1, 0, 160, 300, null, null, "일반인 양민입니다"],
|
||||||
|
[0, "장군보", null, 0, null, 92, 90, 62, 0, 160, 300, null, null],
|
||||||
|
[0, "크렌스", null, 0, null, 98, 54, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "콘", null, 0, null, 90, 42, 93, 0, 160, 300, null, null],
|
||||||
|
[0, "리즈나", null, 0, null, 97, 88, 64, 0, 160, 300, null, null, "야겜 하고 싶다"],
|
||||||
|
[0, "오티누스", null, 0, null, 97, 47, 97, 0, 160, 300, null, null],
|
||||||
|
[0, "네시", null, 0, null, 92, 67, 96, 0, 160, 300, null, null, "00"],
|
||||||
|
[0, "시뉴카린", null, 0, null, 91, 90, 59, 0, 160, 300, null, null],
|
||||||
|
[0, "Hide_D", null, 0, null, 91, 41, 95, 0, 160, 300, null, null, "버그 흥겜 힏체섭"],
|
||||||
|
[0, "Pray", null, 0, null, 88, 94, 60, 0, 160, 300, null, null, "탈영 마렵다"],
|
||||||
|
[0, "사스케", null, 0, null, 90, 96, 57, 0, 160, 300, null, null, "아무리 고민해도 찰진 대사가 없습니다."],
|
||||||
|
[0, "SARS", null, 0, null, 91, 61, 92, 0, 160, 300, null, null, "아마존 주식 떡상 기원"],
|
||||||
|
[0, "마요이", null, 0, null, 93, 59, 93, 0, 160, 300, null, null, "로열방 없습니다"],
|
||||||
|
[0, "세정", null, 0, null, 88, 68, 92, 0, 160, 300, null, null],
|
||||||
|
[0, "김나영", null, 0, null, 93, 90, 64, 0, 160, 300, null, null, "김나영 머리에서 김나영"],
|
||||||
|
[0, "Cure", null, 0, null, 89, 63, 94, 0, 160, 300, null, null]
|
||||||
|
],
|
||||||
|
"general_ex":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"initialEvents":[
|
||||||
|
[
|
||||||
|
true,
|
||||||
|
["ChangeCity", "all", {
|
||||||
|
"trade":100
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"month", 1000,
|
||||||
|
["Date", "==", 180, 1],
|
||||||
|
["ChangeCity", "all", {
|
||||||
|
"trade":100
|
||||||
|
}],
|
||||||
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"month", 1000,
|
||||||
|
["Date", "==", 180, 7],
|
||||||
|
["ChangeCity", "all", {
|
||||||
|
"trade":100
|
||||||
|
}],
|
||||||
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"month", 1000,
|
||||||
|
["Date", "==", 181, 1],
|
||||||
|
["ChangeCity", "all", {
|
||||||
|
"trade":100
|
||||||
|
}],
|
||||||
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"month", 1000,
|
||||||
|
["Date", "==", 181, 7],
|
||||||
|
["ChangeCity", "all", {
|
||||||
|
"trade":100
|
||||||
|
}],
|
||||||
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"month", 1000,
|
||||||
|
["Date", "==", 182, 1],
|
||||||
|
["ChangeCity", "all", {
|
||||||
|
"trade":100
|
||||||
|
}],
|
||||||
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"month", 1000,
|
||||||
|
["Date", "==", 182, 7],
|
||||||
|
["ChangeCity", "all", {
|
||||||
|
"trade":100
|
||||||
|
}],
|
||||||
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -11,6 +11,9 @@
|
|||||||
"history": [
|
"history": [
|
||||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>병기로 싸운다! 최고의 충차 지휘관을 가린다"
|
"<C>●</>180년 1월:<L><b>【이벤트】</b></>병기로 싸운다! 최고의 충차 지휘관을 가린다"
|
||||||
],
|
],
|
||||||
|
"const": {
|
||||||
|
"npcBanMessageProb":1
|
||||||
|
},
|
||||||
"initialEvents":[
|
"initialEvents":[
|
||||||
[
|
[
|
||||||
true,
|
true,
|
||||||
@@ -33,6 +36,14 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"events":[
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,18 @@
|
|||||||
],
|
],
|
||||||
"const": {
|
"const": {
|
||||||
"expandCityDefaultCost": 30000,
|
"expandCityDefaultCost": 30000,
|
||||||
"expandCityCostCoef": 250
|
"expandCityCostCoef": 250,
|
||||||
}
|
"npcBanMessageProb":1
|
||||||
|
},
|
||||||
|
"events":[
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
|
]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
],
|
],
|
||||||
"const": {
|
"const": {
|
||||||
"joinRuinedNPCProp":0,
|
"joinRuinedNPCProp":0,
|
||||||
|
"npcBanMessageProb":1,
|
||||||
"availableSpecialWar":[
|
"availableSpecialWar":[
|
||||||
"che_귀병", "che_신산", "che_환술", "che_집중", "che_신중", "che_반계",
|
"che_귀병", "che_신산", "che_환술", "che_집중", "che_신중", "che_반계",
|
||||||
"che_보병", "che_궁병", "che_기병", "che_공성",
|
"che_보병", "che_궁병", "che_기병", "che_공성",
|
||||||
@@ -79,6 +80,15 @@
|
|||||||
"trade":100
|
"trade":100
|
||||||
}],
|
}],
|
||||||
["DeleteEvent"]
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,9 @@
|
|||||||
"history": [
|
"history": [
|
||||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>29기까지 내로라 하는 모든 장수들이 모였다!"
|
"<C>●</>180년 1월:<L><b>【이벤트】</b></>29기까지 내로라 하는 모든 장수들이 모였다!"
|
||||||
],
|
],
|
||||||
|
"const": {
|
||||||
|
"npcBanMessageProb":1
|
||||||
|
},
|
||||||
"events": [
|
"events": [
|
||||||
[
|
[
|
||||||
"month", 1000,
|
"month", 1000,
|
||||||
@@ -24,6 +27,15 @@
|
|||||||
"agri": "+1200",
|
"agri": "+1200",
|
||||||
"comm": "+1200"
|
"comm": "+1200"
|
||||||
}]
|
}]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
],
|
],
|
||||||
"const": {
|
"const": {
|
||||||
"joinRuinedNPCProp":0,
|
"joinRuinedNPCProp":0,
|
||||||
|
"npcBanMessageProb":1,
|
||||||
"availableGeneralCommand": {
|
"availableGeneralCommand": {
|
||||||
"": [
|
"": [
|
||||||
"휴식",
|
"휴식",
|
||||||
@@ -179,6 +180,15 @@
|
|||||||
],
|
],
|
||||||
["OpenNationBetting", 1, 1000],
|
["OpenNationBetting", 1, 1000],
|
||||||
["DeleteEvent"]
|
["DeleteEvent"]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"destroy_nation", 1000,
|
||||||
|
["and",
|
||||||
|
["Date", ">=", 183, 1],
|
||||||
|
["RemainNation", "==", 1]
|
||||||
|
],
|
||||||
|
["BlockScoutAction"],
|
||||||
|
["DeleteEvent"]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+237
-252
@@ -1,7 +1,6 @@
|
|||||||
############################################################################
|
##############################
|
||||||
## 장수 테이블
|
## 장수 테이블
|
||||||
############################################################################
|
##############################
|
||||||
|
|
||||||
CREATE TABLE `general` (
|
CREATE TABLE `general` (
|
||||||
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`owner` INT(11) NOT NULL DEFAULT '0',
|
`owner` INT(11) NOT NULL DEFAULT '0',
|
||||||
@@ -40,7 +39,7 @@ CREATE TABLE `general` (
|
|||||||
`dex5` INT(8) NOT NULL DEFAULT '0',
|
`dex5` INT(8) NOT NULL DEFAULT '0',
|
||||||
`officer_level` INT(2) NOT NULL DEFAULT '0',
|
`officer_level` INT(2) NOT NULL DEFAULT '0',
|
||||||
`officer_city` INT(4) NOT NULL DEFAULT '0',
|
`officer_city` INT(4) NOT NULL DEFAULT '0',
|
||||||
`permission` ENUM('normal','auditor','ambassador') NULL DEFAULT 'normal',
|
`permission` ENUM('normal', 'auditor', 'ambassador') NULL DEFAULT 'normal',
|
||||||
`gold` INT(6) NOT NULL DEFAULT '1000',
|
`gold` INT(6) NOT NULL DEFAULT '1000',
|
||||||
`rice` INT(6) NOT NULL DEFAULT '1000',
|
`rice` INT(6) NOT NULL DEFAULT '1000',
|
||||||
`crew` INT(5) NOT NULL DEFAULT '0',
|
`crew` INT(5) NOT NULL DEFAULT '0',
|
||||||
@@ -76,9 +75,9 @@ CREATE TABLE `general` (
|
|||||||
`tournament` INT(1) NULL DEFAULT '0',
|
`tournament` INT(1) NULL DEFAULT '0',
|
||||||
`vote` INT(1) NULL DEFAULT '0',
|
`vote` INT(1) NULL DEFAULT '0',
|
||||||
`newvote` INT(1) NULL DEFAULT '0',
|
`newvote` INT(1) NULL DEFAULT '0',
|
||||||
`last_turn` TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`last_turn`)),
|
`last_turn` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
`aux` LONGTEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`aux`)),
|
`aux` LONGTEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
`penalty` TEXT NULL DEFAULT '',
|
`penalty` TEXT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`no`),
|
PRIMARY KEY (`no`),
|
||||||
INDEX `nation` (`nation`, `npc`),
|
INDEX `nation` (`nation`, `npc`),
|
||||||
INDEX `city` (`city`),
|
INDEX `city` (`city`),
|
||||||
@@ -89,30 +88,25 @@ CREATE TABLE `general` (
|
|||||||
INDEX `officer_level` (`nation`, `officer_level`),
|
INDEX `officer_level` (`nation`, `officer_level`),
|
||||||
INDEX `officer_city` (`officer_city`, `officer_level`),
|
INDEX `officer_city` (`officer_city`, `officer_level`),
|
||||||
INDEX `name` (`name`),
|
INDEX `name` (`name`),
|
||||||
INDEX `last_refresh` (`lastrefresh`)
|
INDEX `last_refresh` (`lastrefresh`),
|
||||||
)
|
CONSTRAINT `json1` CHECK (json_valid(`last_turn`)),
|
||||||
DEFAULT CHARSET=utf8mb4
|
CONSTRAINT `json2` CHECK (json_valid(`aux`)),
|
||||||
ENGINE=Aria;
|
CONSTRAINT `json3` CHECK (json_valid(`penalty`))
|
||||||
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
CREATE TABLE `general_turn` (
|
CREATE TABLE `general_turn` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`general_id` INT(11) NOT NULL,
|
`general_id` INT(11) NOT NULL,
|
||||||
`turn_idx` INT(4) NOT NULL,
|
`turn_idx` INT(4) NOT NULL,
|
||||||
`action` VARCHAR(20) NOT NULL,
|
`action` VARCHAR(20) NOT NULL,
|
||||||
`arg` TEXT NULL DEFAULT NULL,
|
`arg` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
|
||||||
`brief` TEXT NULL DEFAULT NULL,
|
`brief` TEXT NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `general_id` (`general_id`, `turn_idx`),
|
UNIQUE INDEX `general_id` (`general_id`, `turn_idx`),
|
||||||
INDEX `action` (`action`, `turn_idx`, `general_id`)
|
INDEX `action` (`action`, `turn_idx`, `general_id`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
DEFAULT CHARSET=utf8mb4
|
##############################
|
||||||
ENGINE=Aria
|
|
||||||
;
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
## 국가 테이블
|
## 국가 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
|
|
||||||
CREATE TABLE `nation` (
|
CREATE TABLE `nation` (
|
||||||
`nation` INT(6) NOT NULL AUTO_INCREMENT,
|
`nation` INT(6) NOT NULL AUTO_INCREMENT,
|
||||||
`name` VARCHAR(64) NOT NULL COLLATE 'utf8mb4_bin',
|
`name` VARCHAR(64) NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
@@ -133,29 +127,35 @@ CREATE TABLE `nation` (
|
|||||||
`surlimit` INT(4) NULL DEFAULT '72',
|
`surlimit` INT(4) NULL DEFAULT '72',
|
||||||
`tech` float NULL DEFAULT '0',
|
`tech` float NULL DEFAULT '0',
|
||||||
`power` INT(8) NULL DEFAULT '0',
|
`power` INT(8) NULL DEFAULT '0',
|
||||||
`spy` TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`spy`)),
|
`spy` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
`level` INT(1) NULL DEFAULT '0',
|
`level` INT(1) NULL DEFAULT '0',
|
||||||
`type` VARCHAR(20) NOT NULL DEFAULT 'che_중립',
|
`type` VARCHAR(20) NOT NULL DEFAULT 'che_중립',
|
||||||
`aux` LONGTEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`aux`)),
|
`aux` LONGTEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`nation`)
|
PRIMARY KEY (`nation`),
|
||||||
)
|
CONSTRAINT `json1` CHECK (json_valid(`spy`)),
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
CONSTRAINT `json2` CHECK (json_valid(`aux`))
|
||||||
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
CREATE TABLE `nation_turn` (
|
CREATE TABLE `nation_turn` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`nation_id` INT(11) NOT NULL,
|
`nation_id` INT(11) NOT NULL,
|
||||||
`officer_level` INT(4) NOT NULL,
|
`officer_level` INT(4) NOT NULL,
|
||||||
`turn_idx` INT(4) NOT NULL,
|
`turn_idx` INT(4) NOT NULL,
|
||||||
`action` VARCHAR(16) NOT NULL,
|
`action` VARCHAR(16) NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
`arg` TEXT NULL DEFAULT NULL CHECK (json_valid(`arg`)),
|
`arg` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
|
||||||
`brief` TEXT NULL DEFAULT NULL,
|
`brief` TEXT NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `nation` (`nation_id`, `officer_level`, `turn_idx`),
|
UNIQUE INDEX `nation` (`nation_id`, `officer_level`, `turn_idx`),
|
||||||
INDEX `action` (`action`, `turn_idx`, `nation_id`, `officer_level`)
|
INDEX `action` (
|
||||||
)
|
`action`,
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
`turn_idx`,
|
||||||
|
`nation_id`,
|
||||||
##회의실
|
`officer_level`
|
||||||
|
),
|
||||||
|
CONSTRAINT `json` CHECK (json_valid(`arg`))
|
||||||
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
|
## 회의실
|
||||||
|
##############################
|
||||||
CREATE TABLE `board` (
|
CREATE TABLE `board` (
|
||||||
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`nation_no` INT(11) NOT NULL,
|
`nation_no` INT(11) NOT NULL,
|
||||||
@@ -168,9 +168,7 @@ CREATE TABLE `board` (
|
|||||||
`text` TEXT NOT NULL,
|
`text` TEXT NOT NULL,
|
||||||
PRIMARY KEY (`no`),
|
PRIMARY KEY (`no`),
|
||||||
INDEX `nation_no` (`nation_no`, `is_secret`, `date`)
|
INDEX `nation_no` (`nation_no`, `is_secret`, `date`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
CREATE TABLE `comment` (
|
CREATE TABLE `comment` (
|
||||||
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`nation_no` INT(11) NOT NULL,
|
`nation_no` INT(11) NOT NULL,
|
||||||
@@ -183,12 +181,10 @@ CREATE TABLE `comment` (
|
|||||||
PRIMARY KEY (`no`),
|
PRIMARY KEY (`no`),
|
||||||
INDEX `nation_no` (`nation_no`, `is_secret`, `date`),
|
INDEX `nation_no` (`nation_no`, `is_secret`, `date`),
|
||||||
INDEX `document_no` (`document_no`, `date`)
|
INDEX `document_no` (`document_no`, `date`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
##############################
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
## 도시 테이블
|
## 도시 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
## trade 100 이 표준 시세
|
## trade 100 이 표준 시세
|
||||||
CREATE TABLE `city` (
|
CREATE TABLE `city` (
|
||||||
`city` INT(6) NOT NULL AUTO_INCREMENT,
|
`city` INT(6) NOT NULL AUTO_INCREMENT,
|
||||||
@@ -216,26 +212,23 @@ CREATE TABLE `city` (
|
|||||||
`state` INT(2) NOT NULL DEFAULT '0',
|
`state` INT(2) NOT NULL DEFAULT '0',
|
||||||
`region` INT(2) NOT NULL,
|
`region` INT(2) NOT NULL,
|
||||||
`term` INT(1) NOT NULL DEFAULT '0',
|
`term` INT(1) NOT NULL DEFAULT '0',
|
||||||
`conflict` TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`conflict`)),
|
`conflict` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`city`),
|
PRIMARY KEY (`city`),
|
||||||
INDEX `nation` (`nation`)
|
INDEX `nation` (`nation`),
|
||||||
) ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
CONSTRAINT `json` CHECK (json_valid(`conflict`))
|
||||||
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
###########################################################################
|
##############################
|
||||||
## 부대 테이블
|
## 부대 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
|
|
||||||
CREATE TABLE `troop` (
|
CREATE TABLE `troop` (
|
||||||
`troop_leader` INT(6) NOT NULL,
|
`troop_leader` INT(6) NOT NULL,
|
||||||
`nation` INT(6) NOT NULL,
|
`nation` INT(6) NOT NULL,
|
||||||
`name` VARCHAR(50) NOT NULL,
|
`name` VARCHAR(50) NOT NULL,
|
||||||
PRIMARY KEY (`troop_leader`)
|
PRIMARY KEY (`troop_leader`)
|
||||||
) ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
##########################################################################
|
|
||||||
## 락 테이블
|
## 락 테이블
|
||||||
##########################################################################
|
##############################
|
||||||
|
|
||||||
CREATE TABLE `plock` (
|
CREATE TABLE `plock` (
|
||||||
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`type` ENUM('GAME', 'ETC', 'TOURNAMENT') NOT NULL DEFAULT 'GAME',
|
`type` ENUM('GAME', 'ETC', 'TOURNAMENT') NOT NULL DEFAULT 'GAME',
|
||||||
@@ -243,33 +236,26 @@ CREATE TABLE `plock` (
|
|||||||
`locktime` DATETIME(6) NOT NULL,
|
`locktime` DATETIME(6) NOT NULL,
|
||||||
PRIMARY KEY (`no`),
|
PRIMARY KEY (`no`),
|
||||||
UNIQUE INDEX `type` (`type`)
|
UNIQUE INDEX `type` (`type`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
DEFAULT CHARSET=utf8mb4
|
##############################
|
||||||
ENGINE=Aria
|
|
||||||
;
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
## 메시지 테이블
|
## 메시지 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
CREATE TABLE `message` (
|
CREATE TABLE `message` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`mailbox` INT(11) NOT NULL COMMENT '9999 == public, >= 9000 national',
|
`mailbox` INT(11) NOT NULL COMMENT '9999 == public, >= 9000 national',
|
||||||
`type` ENUM('private','national','public','diplomacy') NOT NULL,
|
`type` ENUM('private', 'national', 'public', 'diplomacy') NOT NULL,
|
||||||
`src` INT(11) NOT NULL,
|
`src` INT(11) NOT NULL,
|
||||||
`dest` INT(11) NOT NULL,
|
`dest` INT(11) NOT NULL,
|
||||||
`time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
`valid_until` DATETIME NOT NULL DEFAULT '9999-12-31 23:59:59',
|
`valid_until` DATETIME NOT NULL DEFAULT '9999-12-31 23:59:59',
|
||||||
`message` TEXT NOT NULL CHECK (json_valid(`message`)),
|
`message` TEXT NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `by_mailbox` (`mailbox`, `type`, `id`)
|
INDEX `by_mailbox` (`mailbox`, `type`, `id`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`message`))
|
||||||
DEFAULT CHARSET=utf8mb4
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
ENGINE=Aria;
|
##############################
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
## 명전 테이블
|
## 명전 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `hall` (
|
CREATE TABLE IF NOT EXISTS `hall` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`server_id` CHAR(20) NOT NULL,
|
`server_id` CHAR(20) NOT NULL,
|
||||||
@@ -279,20 +265,17 @@ CREATE TABLE IF NOT EXISTS `hall` (
|
|||||||
`type` VARCHAR(20) NOT NULL,
|
`type` VARCHAR(20) NOT NULL,
|
||||||
`value` DOUBLE NOT NULL,
|
`value` DOUBLE NOT NULL,
|
||||||
`owner` INT(11) NULL DEFAULT NULL,
|
`owner` INT(11) NULL DEFAULT NULL,
|
||||||
`aux` LONGTEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`aux`)),
|
`aux` LONGTEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `server_general` (`server_id`, `type`, `general_no`),
|
UNIQUE INDEX `server_general` (`server_id`, `type`, `general_no`),
|
||||||
UNIQUE INDEX `owner` (`owner`, `server_id`, `type`),
|
UNIQUE INDEX `owner` (`owner`, `server_id`, `type`),
|
||||||
INDEX `server_show` (`server_id`, `type`, `value`),
|
INDEX `server_show` (`server_id`, `type`, `value`),
|
||||||
INDEX `scenario` (`season`, `scenario`, `type`, `value`)
|
INDEX `scenario` (`season`, `scenario`, `type`, `value`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`aux`))
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
|
## 게임 정보 테이블(유지)
|
||||||
###########################################################################
|
##############################
|
||||||
## 왕조 테이블
|
|
||||||
###########################################################################
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `ng_games` (
|
CREATE TABLE IF NOT EXISTS `ng_games` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`server_id` CHAR(20) NOT NULL,
|
`server_id` CHAR(20) NOT NULL,
|
||||||
@@ -302,24 +285,28 @@ CREATE TABLE IF NOT EXISTS `ng_games` (
|
|||||||
`season` INT(11) NOT NULL,
|
`season` INT(11) NOT NULL,
|
||||||
`scenario` INT(11) NOT NULL,
|
`scenario` INT(11) NOT NULL,
|
||||||
`scenario_name` TEXT NOT NULL,
|
`scenario_name` TEXT NOT NULL,
|
||||||
`env` TEXT NOT NULL CHECK (json_valid(`env`)),
|
`env` TEXT NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `server_id` (`server_id`),
|
UNIQUE INDEX `server_id` (`server_id`),
|
||||||
INDEX `date` (`date`)
|
INDEX `date` (`date`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`env`))
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
|
## 멸망한 국가 목록(유지)
|
||||||
|
##############################
|
||||||
CREATE TABLE IF NOT EXISTS `ng_old_nations` (
|
CREATE TABLE IF NOT EXISTS `ng_old_nations` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`server_id` CHAR(20) NOT NULL DEFAULT '0',
|
`server_id` CHAR(20) NOT NULL DEFAULT '0',
|
||||||
`nation` INT(11) NOT NULL DEFAULT '0',
|
`nation` INT(11) NOT NULL DEFAULT '0',
|
||||||
`data` LONGTEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`data`)),
|
`data` LONGTEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `server_id` (`server_id`, `nation`)
|
INDEX `server_id` (`server_id`, `nation`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`data`))
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPRESSED;
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
|
## 사망한 장수 목록(유지)
|
||||||
|
##############################
|
||||||
CREATE TABLE IF NOT EXISTS `ng_old_generals` (
|
CREATE TABLE IF NOT EXISTS `ng_old_generals` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`server_id` CHAR(20) NOT NULL,
|
`server_id` CHAR(20) NOT NULL,
|
||||||
@@ -328,14 +315,16 @@ CREATE TABLE IF NOT EXISTS `ng_old_generals` (
|
|||||||
`name` VARCHAR(32) NOT NULL,
|
`name` VARCHAR(32) NOT NULL,
|
||||||
`last_yearmonth` INT(11) NOT NULL,
|
`last_yearmonth` INT(11) NOT NULL,
|
||||||
`turntime` DATETIME(6) NOT NULL,
|
`turntime` DATETIME(6) NOT NULL,
|
||||||
`data` MEDIUMTEXT NOT NULL,
|
`data` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `by_no` (`server_id`, `general_no`),
|
UNIQUE INDEX `by_no` (`server_id`, `general_no`),
|
||||||
INDEX `by_name` (`server_id`, `name`),
|
INDEX `by_name` (`server_id`, `name`),
|
||||||
INDEX `owner` (`owner`, `server_id`)
|
INDEX `owner` (`owner`, `server_id`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`data`))
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPRESSED;
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
|
## 왕조 테이블(유지)
|
||||||
|
##############################
|
||||||
CREATE TABLE IF NOT EXISTS `emperior` (
|
CREATE TABLE IF NOT EXISTS `emperior` (
|
||||||
`no` INT(6) NOT NULL AUTO_INCREMENT,
|
`no` INT(6) NOT NULL AUTO_INCREMENT,
|
||||||
`server_id` CHAR(20) NULL DEFAULT '',
|
`server_id` CHAR(20) NULL DEFAULT '',
|
||||||
@@ -377,48 +366,59 @@ CREATE TABLE IF NOT EXISTS `emperior` (
|
|||||||
`tiger` VARCHAR(128) NULL DEFAULT '',
|
`tiger` VARCHAR(128) NULL DEFAULT '',
|
||||||
`eagle` VARCHAR(128) NULL DEFAULT '',
|
`eagle` VARCHAR(128) NULL DEFAULT '',
|
||||||
`gen` TEXT NULL DEFAULT '',
|
`gen` TEXT NULL DEFAULT '',
|
||||||
`history` MEDIUMTEXT NULL DEFAULT '{}' CHECK (json_valid(`aux`)),
|
`history` MEDIUMTEXT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
`aux` MEDIUMTEXT NULL DEFAULT '{}' CHECK (json_valid(`aux`)),
|
`aux` MEDIUMTEXT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`no`)
|
PRIMARY KEY (`no`),
|
||||||
) ENGINE=Aria ROW_FORMAT=COMPRESSED DEFAULT CHARSET=utf8mb4;
|
CONSTRAINT `json1` CHECK (json_valid(`history`)),
|
||||||
|
CONSTRAINT `json2` CHECK (json_valid(`aux`))
|
||||||
###########################################################################
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
## 외교 테이블
|
## 외교 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
create table diplomacy (
|
create table diplomacy (
|
||||||
`no` INT(6) NOT NULL AUTO_INCREMENT,
|
`no` INT(6) NOT NULL AUTO_INCREMENT,
|
||||||
`me` INT(6) NOT NULL,
|
`me` INT(6) NOT NULL,
|
||||||
`you` INT(6) NOT NULL,
|
`you` INT(6) NOT NULL,
|
||||||
`state` INT(6) NULL DEFAULT '0',
|
`state` INT(6) NULL DEFAULT '0',
|
||||||
`term` INT(6) NULL DEFAULT '0',
|
`term` INT(6) NULL DEFAULT '0',
|
||||||
`dead` INT(8) NULL DEFAULT '0',
|
`dead` INT(8) NULL DEFAULT '0',
|
||||||
`showing` DATETIME NULL DEFAULT NULL,
|
`showing` DATETIME NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`no`),
|
||||||
PRIMARY KEY (`no`),
|
UNIQUE INDEX `me` (`me`, `you`)
|
||||||
UNIQUE INDEX `me` (`me`, `you`)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
) ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
##############################
|
||||||
|
## 외교문서 테이블
|
||||||
|
##############################
|
||||||
CREATE TABLE `ng_diplomacy` (
|
CREATE TABLE `ng_diplomacy` (
|
||||||
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
`no` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`src_nation_id` INT(11) NOT NULL,
|
`src_nation_id` INT(11) NOT NULL,
|
||||||
`dest_nation_id` INT(11) NOT NULL,
|
`dest_nation_id` INT(11) NOT NULL,
|
||||||
`prev_no` INT(11) NULL DEFAULT NULL,
|
`prev_no` INT(11) NULL DEFAULT NULL,
|
||||||
`state` ENUM('proposed','activated','cancelled','replaced') NOT NULL DEFAULT 'proposed',
|
`state` ENUM('proposed', 'activated', 'cancelled', 'replaced') NOT NULL DEFAULT 'proposed',
|
||||||
`text_brief` TEXT NOT NULL,
|
`text_brief` TEXT NOT NULL,
|
||||||
`text_detail` TEXT NOT NULL,
|
`text_detail` TEXT NOT NULL,
|
||||||
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
`src_signer` INT(11) NOT NULL,
|
`src_signer` INT(11) NOT NULL,
|
||||||
`dest_signer` INT(11) NULL DEFAULT NULL,
|
`dest_signer` INT(11) NULL DEFAULT NULL,
|
||||||
`aux` TEXT NULL DEFAULT NULL CHECK (json_valid(`aux`)),
|
`aux` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`no`),
|
PRIMARY KEY (`no`),
|
||||||
INDEX `by_nation_src` (`src_nation_id`, `dest_nation_id`, `state`, `date`),
|
INDEX `by_nation_src` (
|
||||||
INDEX `by_nation_dest` (`dest_nation_id`, `src_nation_id`, `state`, `date`)
|
`src_nation_id`,
|
||||||
)
|
`dest_nation_id`,
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
`state`,
|
||||||
|
`date`
|
||||||
###########################################################################
|
),
|
||||||
|
INDEX `by_nation_dest` (
|
||||||
|
`dest_nation_id`,
|
||||||
|
`src_nation_id`,
|
||||||
|
`state`,
|
||||||
|
`date`
|
||||||
|
),
|
||||||
|
CONSTRAINT `json` CHECK (json_valid(`aux`))
|
||||||
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
## 토너먼트 테이블
|
## 토너먼트 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
CREATE TABLE `tournament` (
|
CREATE TABLE `tournament` (
|
||||||
`seq` INT(6) NOT NULL AUTO_INCREMENT,
|
`seq` INT(6) NOT NULL AUTO_INCREMENT,
|
||||||
`no` INT(6) NULL DEFAULT 0,
|
`no` INT(6) NULL DEFAULT 0,
|
||||||
@@ -440,32 +440,27 @@ CREATE TABLE `tournament` (
|
|||||||
`prmt` INT(1) NULL DEFAULT 0,
|
`prmt` INT(1) NULL DEFAULT 0,
|
||||||
PRIMARY KEY (`seq`),
|
PRIMARY KEY (`seq`),
|
||||||
INDEX `grp` (`grp`, `grp_no`)
|
INDEX `grp` (`grp`, `grp_no`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
COLLATE='utf8mb4_general_ci'
|
##############################
|
||||||
ENGINE=Aria;
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
## 거래 테이블
|
## 거래 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
create table auction (
|
create table `auction` (
|
||||||
no int(6) not null auto_increment,
|
`no` int(6) not null auto_increment,
|
||||||
type int(6) default 0,
|
`type` int(6) default 0,
|
||||||
no1 int(6) default 0,
|
`no1` int(6) default 0,
|
||||||
name1 varchar(64) default '-',
|
`name1` varchar(64) default '-',
|
||||||
amount int(6) default 0,
|
`amount` int(6) default 0,
|
||||||
cost int(6) default 0,
|
`cost` int(6) default 0,
|
||||||
value int(6) default 0,
|
`value` int(6) default 0,
|
||||||
topv int(6) default 0,
|
`topv` int(6) default 0,
|
||||||
no2 int(6) default 0,
|
`no2` int(6) default 0,
|
||||||
name2 varchar(64) default '-',
|
`name2` varchar(64) default '-',
|
||||||
expire datetime,
|
`expire` datetime,
|
||||||
|
PRIMARY KEY (`no`)
|
||||||
PRIMARY KEY (no)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
) ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
##############################
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
## 통계 테이블
|
## 통계 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
CREATE TABLE `statistic` (
|
CREATE TABLE `statistic` (
|
||||||
`no` INT(6) NOT NULL AUTO_INCREMENT,
|
`no` INT(6) NOT NULL AUTO_INCREMENT,
|
||||||
`year` INT(4) NULL DEFAULT '0',
|
`year` INT(4) NULL DEFAULT '0',
|
||||||
@@ -479,48 +474,46 @@ CREATE TABLE `statistic` (
|
|||||||
`power_hist` TEXT NULL DEFAULT '',
|
`power_hist` TEXT NULL DEFAULT '',
|
||||||
`crewtype` TEXT NULL DEFAULT '',
|
`crewtype` TEXT NULL DEFAULT '',
|
||||||
`etc` TEXT NULL DEFAULT '',
|
`etc` TEXT NULL DEFAULT '',
|
||||||
`aux` TEXT NULL DEFAULT NULL CHECK (json_valid(`aux`)),
|
`aux` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`no`)
|
PRIMARY KEY (`no`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`aux`))
|
||||||
ENGINE=Aria ROW_FORMAT=COMPRESSED DEFAULT CHARSET=utf8mb4;
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
###########################################################################
|
|
||||||
## 연감 테이블
|
## 연감 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
CREATE TABLE IF NOT EXISTS `ng_history` (
|
CREATE TABLE IF NOT EXISTS `ng_history` (
|
||||||
`no` INT(6) NOT NULL AUTO_INCREMENT,
|
`no` INT(6) NOT NULL AUTO_INCREMENT,
|
||||||
`server_id` CHAR(20) NOT NULL,
|
`server_id` CHAR(20) NOT NULL,
|
||||||
`year` INT(4) NULL,
|
`year` INT(4) NULL,
|
||||||
`month` INT(2) NULL,
|
`month` INT(2) NULL,
|
||||||
`map` MEDIUMTEXT NULL DEFAULT NULL CHECK (json_valid(`map`)),
|
`map` MEDIUMTEXT NULL DEFAULT NULL,
|
||||||
`global_history` MEDIUMTEXT NULL DEFAULT NULL CHECK (json_valid(`global_history`)),
|
`global_history` MEDIUMTEXT NULL DEFAULT NULL,
|
||||||
`global_action` MEDIUMTEXT NULL DEFAULT NULL CHECK (json_valid(`global_action`)),
|
`global_action` MEDIUMTEXT NULL DEFAULT NULL,
|
||||||
`nations` MEDIUMTEXT NULL DEFAULT NULL CHECK (json_valid(`nations`)),
|
`nations` MEDIUMTEXT NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (`no`),
|
PRIMARY KEY (`no`),
|
||||||
INDEX `server_id` (`server_id`, `year`, `month`)
|
INDEX `server_id` (`server_id`, `year`, `month`),
|
||||||
)
|
CONSTRAINT `json1` CHECK (json_valid(`map`)),
|
||||||
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
CONSTRAINT `json2` CHECK (json_valid(`global_history`)),
|
||||||
|
CONSTRAINT `json3` CHECK (json_valid(`global_action`)),
|
||||||
###########################################################################
|
CONSTRAINT `json4` CHECK (json_valid(`nations`))
|
||||||
|
) COLLATE = 'utf8mb4_bin' ENGINE = Aria;
|
||||||
|
##############################
|
||||||
## 이벤트 핸들러 테이블
|
## 이벤트 핸들러 테이블
|
||||||
###########################################################################
|
##############################
|
||||||
|
|
||||||
CREATE TABLE `event` (
|
CREATE TABLE `event` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`target` ENUM('MONTH','OCCUPY_CITY','DESTROY_NATION') NOT NULL DEFAULT 'MONTH',
|
`target` ENUM('MONTH', 'OCCUPY_CITY', 'DESTROY_NATION') NOT NULL DEFAULT 'MONTH',
|
||||||
`priority` INT(11) NOT NULL DEFAULT '1000',
|
`priority` INT(11) NOT NULL DEFAULT '1000',
|
||||||
`condition` MEDIUMTEXT NOT NULL,
|
`condition` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
`action` MEDIUMTEXT NOT NULL,
|
`action` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `target` (`target`, `priority`, `id`),
|
INDEX `target` (`target`, `priority`, `id`),
|
||||||
CONSTRAINT `condition` CHECK (json_valid(`condition`)),
|
CONSTRAINT `json1` CHECK (json_valid(`condition`)),
|
||||||
CONSTRAINT `action` CHECK (json_valid(`action`))
|
CONSTRAINT `json2` CHECK (json_valid(`action`))
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
DEFAULT CHARSET=utf8mb4
|
##############################
|
||||||
ENGINE=Aria;
|
## 전체 이벤트 기록 테이블
|
||||||
|
##############################
|
||||||
|
|
||||||
##전체 이벤트 기록 테이블
|
|
||||||
CREATE TABLE `world_history` (
|
CREATE TABLE `world_history` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`nation_id` INT(11) NOT NULL,
|
`nation_id` INT(11) NOT NULL,
|
||||||
@@ -530,57 +523,50 @@ CREATE TABLE `world_history` (
|
|||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `date` (`nation_id`, `year`, `month`, `id`),
|
INDEX `date` (`nation_id`, `year`, `month`, `id`),
|
||||||
INDEX `plain` (`nation_id`, `id`)
|
INDEX `plain` (`nation_id`, `id`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
DEFAULT CHARSET=utf8mb4
|
############################
|
||||||
ENGINE=Aria
|
## 장수 동향 테이블
|
||||||
;
|
##############################
|
||||||
|
|
||||||
##장수 동향 테이블
|
|
||||||
CREATE TABLE `general_record` (
|
CREATE TABLE `general_record` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`general_id` INT(11) NOT NULL,
|
`general_id` INT(11) NOT NULL,
|
||||||
`log_type` ENUM('action','battle_brief','battle', 'history') NOT NULL,
|
`log_type` ENUM('action', 'battle_brief', 'battle', 'history') NOT NULL,
|
||||||
`year` INT(4) NOT NULL,
|
`year` INT(4) NOT NULL,
|
||||||
`month` INT(2) NOT NULL,
|
`month` INT(2) NOT NULL,
|
||||||
`text` TEXT NOT NULL,
|
`text` TEXT NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `date` (`general_id`, `log_type`, `year`, `month`, `id`),
|
INDEX `date` (`general_id`, `log_type`, `year`, `month`, `id`),
|
||||||
INDEX `plain` (`general_id`, `log_type`, `id`)
|
INDEX `plain` (`general_id`, `log_type`, `id`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
DEFAULT CHARSET=utf8mb4
|
##############################
|
||||||
ENGINE=Aria
|
## 예약 오픈 테이블
|
||||||
;
|
##############################
|
||||||
|
|
||||||
######
|
|
||||||
# 예약 오픈 테이블
|
|
||||||
CREATE TABLE IF NOT EXISTS `reserved_open` (
|
CREATE TABLE IF NOT EXISTS `reserved_open` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`options` TEXT NULL DEFAULT NULL CHECK (json_valid(`options`)),
|
`options` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
|
||||||
`date` DATETIME NULL DEFAULT NULL,
|
`date` DATETIME NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `date` (`date`)
|
INDEX `date` (`date`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`options`))
|
||||||
DEFAULT CHARSET=utf8mb4
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
ENGINE=Aria;
|
##############################
|
||||||
|
## 장수 선택 토큰
|
||||||
######
|
##############################
|
||||||
# 장수 선택 토큰
|
|
||||||
CREATE TABLE `select_npc_token` (
|
CREATE TABLE `select_npc_token` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`owner` INT(11) NOT NULL,
|
`owner` INT(11) NOT NULL,
|
||||||
`valid_until` DATETIME NOT NULL,
|
`valid_until` DATETIME NOT NULL,
|
||||||
`pick_more_from` DATETIME NOT NULL,
|
`pick_more_from` DATETIME NOT NULL,
|
||||||
`pick_result` TEXT NOT NULL CHECK (json_valid(`pick_result`)),
|
`pick_result` TEXT NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
`nonce` INT(11) NOT NULL,
|
`nonce` INT(11) NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `owner` (`owner`),
|
UNIQUE INDEX `owner` (`owner`),
|
||||||
INDEX `valid_until` (`valid_until`)
|
INDEX `valid_until` (`valid_until`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`pick_result`))
|
||||||
DEFAULT CHARSET=utf8mb4
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
ENGINE=Aria;
|
##############################
|
||||||
|
## 장수 생성 풀 토큰
|
||||||
######
|
##############################
|
||||||
# 장수 생성 풀 토큰
|
|
||||||
CREATE TABLE `select_pool` (
|
CREATE TABLE `select_pool` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`unique_name` VARCHAR(20) NOT NULL,
|
`unique_name` VARCHAR(20) NOT NULL,
|
||||||
@@ -593,36 +579,32 @@ CREATE TABLE `select_pool` (
|
|||||||
UNIQUE INDEX `general_id` (`general_id`),
|
UNIQUE INDEX `general_id` (`general_id`),
|
||||||
INDEX `owner` (`owner`),
|
INDEX `owner` (`owner`),
|
||||||
INDEX `reserved_until` (`reserved_until`, `general_id`)
|
INDEX `reserved_until` (`reserved_until`, `general_id`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
COLLATE='utf8mb4_general_ci'
|
##############################
|
||||||
ENGINE=Aria
|
## KV storage
|
||||||
;
|
##############################
|
||||||
|
|
||||||
###################
|
|
||||||
# KV storage
|
|
||||||
###################
|
|
||||||
CREATE TABLE IF NOT EXISTS `storage` (
|
CREATE TABLE IF NOT EXISTS `storage` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`namespace` VARCHAR(40) NOT NULL,
|
`namespace` VARCHAR(40) NOT NULL,
|
||||||
`key` VARCHAR(40) NOT NULL,
|
`key` VARCHAR(40) NOT NULL,
|
||||||
`value` LONGTEXT NOT NULL CHECK (json_valid(`value`)),
|
`value` LONGTEXT NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `key` (`namespace`, `key`)
|
UNIQUE INDEX `key` (`namespace`, `key`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`value`))
|
||||||
COLLATE='utf8mb4_general_ci'
|
) COLLATE = 'utf8mb4_bin' ENGINE = Aria;
|
||||||
ENGINE=Aria;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `nation_env` (
|
CREATE TABLE IF NOT EXISTS `nation_env` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`namespace` INT(11) NOT NULL, #storage와 다름!
|
`namespace` INT(11) NOT NULL,
|
||||||
|
##storage와 다름!
|
||||||
`key` VARCHAR(40) NOT NULL,
|
`key` VARCHAR(40) NOT NULL,
|
||||||
`value` LONGTEXT NOT NULL CHECK (json_valid(`value`)),
|
`value` LONGTEXT NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `key` (`namespace`, `key`)
|
UNIQUE INDEX `key` (`namespace`, `key`),
|
||||||
)
|
CONSTRAINT `json` CHECK (json_valid(`value`))
|
||||||
COLLATE='utf8mb4_general_ci'
|
) COLLATE = 'utf8mb4_bin' ENGINE = Aria;
|
||||||
ENGINE=Aria;
|
##############################
|
||||||
|
## 베팅
|
||||||
|
##############################
|
||||||
CREATE TABLE IF NOT EXISTS `betting` (
|
CREATE TABLE IF NOT EXISTS `betting` (
|
||||||
`general_id` INT(11) NOT NULL,
|
`general_id` INT(11) NOT NULL,
|
||||||
`bet0` INT(11) NOT NULL DEFAULT 0,
|
`bet0` INT(11) NOT NULL DEFAULT 0,
|
||||||
@@ -642,9 +624,10 @@ CREATE TABLE IF NOT EXISTS `betting` (
|
|||||||
`bet14` INT(11) NOT NULL DEFAULT 0,
|
`bet14` INT(11) NOT NULL DEFAULT 0,
|
||||||
`bet15` INT(11) NOT NULL DEFAULT 0,
|
`bet15` INT(11) NOT NULL DEFAULT 0,
|
||||||
PRIMARY KEY (`general_id`)
|
PRIMARY KEY (`general_id`)
|
||||||
)
|
) ENGINE = Aria;
|
||||||
ENGINE=Aria;
|
##############################
|
||||||
|
## 명장일람
|
||||||
|
##############################
|
||||||
CREATE TABLE `rank_data` (
|
CREATE TABLE `rank_data` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`nation_id` INT(11) NOT NULL DEFAULT 0,
|
`nation_id` INT(11) NOT NULL DEFAULT 0,
|
||||||
@@ -655,11 +638,10 @@ CREATE TABLE `rank_data` (
|
|||||||
UNIQUE INDEX `by_general` (`general_id`, `type`),
|
UNIQUE INDEX `by_general` (`general_id`, `type`),
|
||||||
INDEX `by_type` (`type`, `value`),
|
INDEX `by_type` (`type`, `value`),
|
||||||
INDEX `by_nation` (`nation_id`, `type`, `value`)
|
INDEX `by_nation` (`nation_id`, `type`, `value`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
COLLATE='utf8mb4_general_ci'
|
##############################
|
||||||
ENGINE=Aria
|
## 유저 전용 로그
|
||||||
;
|
##############################
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `user_record` (
|
CREATE TABLE IF NOT EXISTS `user_record` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`user_id` INT(11) NOT NULL,
|
`user_id` INT(11) NOT NULL,
|
||||||
@@ -670,29 +652,32 @@ CREATE TABLE IF NOT EXISTS `user_record` (
|
|||||||
`date` DATETIME NULL DEFAULT NULL,
|
`date` DATETIME NULL DEFAULT NULL,
|
||||||
`text` TEXT NOT NULL,
|
`text` TEXT NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `date1` (`user_id`, `server_id`, `log_type`, `year`, `month`, `id`),
|
INDEX `date1` (
|
||||||
|
`user_id`,
|
||||||
|
`server_id`,
|
||||||
|
`log_type`,
|
||||||
|
`year`,
|
||||||
|
`month`,
|
||||||
|
`id`
|
||||||
|
),
|
||||||
INDEX `date2` (`user_id`, `server_id`, `log_type`, `date`, `id`),
|
INDEX `date2` (`user_id`, `server_id`, `log_type`, `date`, `id`),
|
||||||
INDEX `date3` (`server_id`, `date`),
|
INDEX `date3` (`server_id`, `date`),
|
||||||
INDEX `date4` (`server_id`, `year`, `month`, `date`),
|
INDEX `date4` (`server_id`, `year`, `month`, `date`),
|
||||||
INDEX `plain` (`user_id`, `log_type`, `id`)
|
INDEX `plain` (`user_id`, `log_type`, `id`)
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
DEFAULT CHARSET=utf8mb4
|
##############################
|
||||||
ENGINE=Aria
|
## 신규 베팅
|
||||||
;
|
##############################
|
||||||
|
|
||||||
CREATE TABLE `ng_betting` (
|
CREATE TABLE `ng_betting` (
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`betting_id` INT(11) NOT NULL,
|
`betting_id` INT(11) NOT NULL,
|
||||||
`general_id` INT(11) NOT NULL,
|
`general_id` INT(11) NOT NULL,
|
||||||
`user_id` INT(11) NULL DEFAULT NULL,
|
`user_id` INT(11) NULL DEFAULT NULL,
|
||||||
`betting_type` VARCHAR(100) NOT NULL COMMENT 'JSON',
|
`betting_type` VARCHAR(100) NOT NULL COLLATE 'utf8mb4_bin',
|
||||||
`amount` INT(11) NOT NULL,
|
`amount` INT(11) NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `by_general` (`general_id`, `betting_id`, `betting_type`),
|
UNIQUE INDEX `by_general` (`general_id`, `betting_id`, `betting_type`),
|
||||||
UNIQUE INDEX `by_bet` (`betting_id`, `betting_type`, `general_id`),
|
UNIQUE INDEX `by_bet` (`betting_id`, `betting_type`, `general_id`),
|
||||||
INDEX `by_user` (`user_id`, `betting_id`, `betting_type`),
|
INDEX `by_user` (`user_id`, `betting_id`, `betting_type`),
|
||||||
CONSTRAINT `type_json` CHECK (json_valid(`betting_type`))
|
CONSTRAINT `json` CHECK (json_valid(`betting_type`))
|
||||||
)
|
) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria;
|
||||||
DEFAULT CHARSET=utf8mb4
|
|
||||||
ENGINE=Aria
|
|
||||||
;
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import { assert } from 'chai';
|
||||||
|
|
||||||
|
describe('hello', ()=>{
|
||||||
|
it('hello1', ()=>{
|
||||||
|
assert.equal(2, 1+1);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,370 @@
|
|||||||
|
import chai, { assert } from 'chai';
|
||||||
|
import chaiBytes from 'chai-bytes';
|
||||||
|
import { bufferByteSize, LiteHashDRBG } from '../ts/util/LiteHashDRBG';
|
||||||
|
import { RandUtil } from '../ts/util/RandUtil';
|
||||||
|
import { convertBytesLikeToArrayBuffer } from '../ts/util/convertBytesLikeToArrayBuffer';
|
||||||
|
import { convertBytesLikeToUint8Array as toBytes } from '../ts/util/convertBytesLikeToUint8Array';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
|
chai.use(chaiBytes);
|
||||||
|
|
||||||
|
type Bytes = ArrayBuffer | DataView | Uint8Array;
|
||||||
|
type MaybeBytes = Bytes | string;
|
||||||
|
|
||||||
|
function fillBlock(body: MaybeBytes, filler: MaybeBytes = '\0', length = bufferByteSize): Uint8Array {
|
||||||
|
const u8Body = toBytes(body);
|
||||||
|
const u8Filler = toBytes(filler, false);
|
||||||
|
|
||||||
|
if (u8Filler.byteLength < 1) {
|
||||||
|
throw new Error('filler must have length');
|
||||||
|
}
|
||||||
|
|
||||||
|
const buffer = new Uint8Array(length);
|
||||||
|
buffer.set(u8Body, 0);
|
||||||
|
let bufferIdx = u8Body.byteLength;
|
||||||
|
|
||||||
|
while (bufferIdx + u8Filler.byteLength < length) {
|
||||||
|
buffer.set(u8Filler, bufferIdx);
|
||||||
|
bufferIdx += u8Filler.byteLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bufferIdx < length) {
|
||||||
|
const slice = new Uint8Array(u8Filler.buffer, u8Filler.byteOffset, length - bufferIdx);
|
||||||
|
buffer.set(slice, bufferIdx);
|
||||||
|
}
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class DummyBlockRNG extends LiteHashDRBG {
|
||||||
|
private repeatBlockCnt: number;
|
||||||
|
private repeatBlock: ArrayBuffer[];
|
||||||
|
|
||||||
|
public constructor(repeatBlock: MaybeBytes[], stateIdx = 0) {
|
||||||
|
super('x');
|
||||||
|
|
||||||
|
this.repeatBlock = [];
|
||||||
|
for (const rawBlock of repeatBlock) {
|
||||||
|
const block = convertBytesLikeToArrayBuffer(rawBlock);
|
||||||
|
if (block.byteLength !== bufferByteSize) {
|
||||||
|
throw new Error;
|
||||||
|
}
|
||||||
|
this.repeatBlock.push(block);
|
||||||
|
}
|
||||||
|
this.repeatBlockCnt = this.repeatBlock.length;
|
||||||
|
this.stateIdx = stateIdx;
|
||||||
|
this.bufferIdx = 0;
|
||||||
|
this.genNextBlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected genNextBlock() {
|
||||||
|
if (!this.repeatBlock) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.buffer = this.repeatBlock[this.stateIdx];
|
||||||
|
this.bufferIdx = 0;
|
||||||
|
this.stateIdx = (this.stateIdx + 1) % this.repeatBlockCnt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const fixedKey = 'HelloWorld';
|
||||||
|
|
||||||
|
|
||||||
|
describe('RNGtestDummy', () => {
|
||||||
|
const rng = new DummyBlockRNG([
|
||||||
|
fillBlock('', "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff")
|
||||||
|
]);
|
||||||
|
|
||||||
|
it('BasicConvert', () => {
|
||||||
|
assert.equal(toBytes("\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff", false).length, 16);
|
||||||
|
});
|
||||||
|
it('SimpleByte', () => {
|
||||||
|
assert.equalBytes(toBytes("\x00", false), rng.nextBytes(1), 'b1');
|
||||||
|
assert.equalBytes(toBytes("\x11\x22", false), rng.nextBytes(2), 'b2');
|
||||||
|
assert.equalBytes(toBytes("\x33\x44\x55", false), rng.nextBytes(3), 'b3');
|
||||||
|
assert.equalBytes(toBytes("\x66\x77\x88\x99", false), rng.nextBytes(4), 'b4');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('OverflowBlock', () => {
|
||||||
|
for (const idx in _.range(16)) {
|
||||||
|
assert.equalBytes(
|
||||||
|
toBytes("\xaa\xbb\xcc\xdd\xee\xff\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99", false),
|
||||||
|
rng.nextBytes(16)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('MultiBlock', () => {
|
||||||
|
assert.equalBytes(
|
||||||
|
fillBlock('', "\xaa\xbb\xcc\xdd\xee\xff\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99", bufferByteSize * 2),
|
||||||
|
rng.nextBytes(bufferByteSize * 2)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('bitTest', () => {
|
||||||
|
assert.equalBytes(toBytes("\x00", false), rng.nextBits(1)); //aa
|
||||||
|
assert.equalBytes(toBytes("\x01", false), rng.nextBits(1)); //bb
|
||||||
|
assert.equalBytes(toBytes("\xcc", false), rng.nextBits(8)); //cc
|
||||||
|
assert.equalBytes(toBytes("\xdd\x02", false), rng.nextBits(10)); //ddee
|
||||||
|
assert.equalBytes(toBytes("\x7f", false), rng.nextBits(7)); //ff
|
||||||
|
assert.equalBytes(toBytes("\x00\x11\x22\x33\x44\x55\x06", false), rng.nextBits(53));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('int', () => {
|
||||||
|
assert.equal(0x77, rng.nextInt(0xff));
|
||||||
|
assert.equal(0x9988, rng.nextInt((1 << 16) - 1));
|
||||||
|
assert.equal(0xddccbbaa, rng.nextInt(0xffffffff));
|
||||||
|
assert.equal(0x0433221100ffee, rng.nextInt());
|
||||||
|
assert.equal(0x05, rng.nextInt(0x0f)); //55
|
||||||
|
assert.equal(0x06, rng.nextInt(0x12)); //66
|
||||||
|
assert.equal(0x08, rng.nextInt(99)); //77(119 -> 7bit) -> 88(136 -> 8bit -> 8)
|
||||||
|
assert.equal(0x99, rng.nextInt(0x99)); //99
|
||||||
|
assert.equal(0xaa, rng.nextInt(0xaa)); //aa (fit Max)
|
||||||
|
});
|
||||||
|
|
||||||
|
it('float', () => {
|
||||||
|
const floatMax = 2 ** 53;
|
||||||
|
const fa = rng.nextFloat1();
|
||||||
|
assert.equal(0x1100ffeeddccbb / floatMax, fa);
|
||||||
|
assert.isTrue(0.5313720384 > fa);
|
||||||
|
assert.isTrue(0.5313720383 < fa);
|
||||||
|
const fb = rng.nextFloat1();
|
||||||
|
assert.equal(0x08776655443322 / floatMax, fb);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('RandUtilDummy', () => {
|
||||||
|
it('shuffle', () => {
|
||||||
|
const rng = new DummyBlockRNG([fillBlock('', '\x17\x16\x15\x14\x13\x12\x11\x10')]);
|
||||||
|
const randUtil = new RandUtil(rng);
|
||||||
|
/**
|
||||||
|
* 7, [7,1,2,3,4,5,6,0]
|
||||||
|
* 6, [7,0,2,3,4,5,6,1]
|
||||||
|
* 5, [7,0,1,3,4,5,6,2]
|
||||||
|
* 4, [7,0,1,2,4,5,6,3]
|
||||||
|
* 3, [7,0,1,2,3,5,6,4]
|
||||||
|
* 2, [7,0,1,2,3,4,6,5]
|
||||||
|
* 1, [7,0,1,2,3,4,5,6]
|
||||||
|
*/
|
||||||
|
assert.deepEqual(
|
||||||
|
randUtil.shuffle(Array.from(_.range(8))),
|
||||||
|
[7, 0, 1, 2, 3, 4, 5, 6]
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0, [0,1,2,3,4,5,6,7,8,9]
|
||||||
|
* 7, [0,8,2,3,4,5,6,7,1,9]
|
||||||
|
* 6, [0,8,1,3,4,5,6,7,2,9]
|
||||||
|
* 5, [0,8,1,2,4,5,6,7,3,9]
|
||||||
|
* 4, [0,8,1,2,3,5,6,7,4,9]
|
||||||
|
* 3, [0,8,1,2,3,4,6,7,5,9]
|
||||||
|
* 2, [0,8,1,2,3,4,5,7,6,9]
|
||||||
|
* 1, [0,8,1,2,3,4,5,6,7,9]
|
||||||
|
* 0, [0,8,1,2,3,4,5,6,7,9]
|
||||||
|
*/
|
||||||
|
assert.deepEqual(
|
||||||
|
randUtil.shuffle(Array.from(_.range(10))),
|
||||||
|
[0, 8, 1, 2, 3, 4, 5, 6, 7, 9]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
const rng = new DummyBlockRNG([fillBlock('', '\x17\x16\x15\x14\x13\x12\x11\x10')]);
|
||||||
|
const randUtil = new RandUtil(rng);
|
||||||
|
it('choice', () => {
|
||||||
|
|
||||||
|
|
||||||
|
//0x17(7), 0x16(6)
|
||||||
|
assert.equal(randUtil.choice([0, 1, 2, 3, 4, 5]), 5);
|
||||||
|
|
||||||
|
//0x15(5), Set 순서 유지
|
||||||
|
assert.equal(randUtil.choice(new Set([5, 3, 1, 2, 8, 0])), 8);
|
||||||
|
|
||||||
|
//0x14(4), 정렬 순서상 숫자(소-대) > 문자열(삽입순) > 심볼 순서
|
||||||
|
assert.equal(randUtil.choice({ c: 'c', a: 'a', b: 'b', 4: 'x', 2: 't', '3': 'q' }), 'c');
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
it('choiceUsingWeight', () => {
|
||||||
|
//0.6275740099377194 * 38.1 = 23.91
|
||||||
|
assert.equal(randUtil.choiceUsingWeight({
|
||||||
|
a: 0.1,
|
||||||
|
b: 10,
|
||||||
|
tt: 2,
|
||||||
|
x: -1,
|
||||||
|
c: 20,
|
||||||
|
d: 0,
|
||||||
|
e: 6
|
||||||
|
}), 'c');
|
||||||
|
|
||||||
|
//0.658946544056166
|
||||||
|
assert.equal(randUtil.choiceUsingWeightPair([
|
||||||
|
['xx', 10],
|
||||||
|
]), 'xx');
|
||||||
|
|
||||||
|
//0.6903152783785083 * 27.3 = 18.84560709973328
|
||||||
|
assert.equal(randUtil.choiceUsingWeightPair([
|
||||||
|
['e', 10],
|
||||||
|
['d', 4],
|
||||||
|
['c', 0.1],
|
||||||
|
['baba', 0.2],
|
||||||
|
['q', 9],
|
||||||
|
['xt', 4]
|
||||||
|
]), 'q');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('RNGexpectedError', () => {
|
||||||
|
const rng = new LiteHashDRBG(fixedKey);
|
||||||
|
it('nextBits0', () => {
|
||||||
|
assert.throw(() => rng.nextBits(0));
|
||||||
|
});
|
||||||
|
it('nextBits-1', () => {
|
||||||
|
assert.throw(() => rng.nextBits(-1));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('nextBytes0', () => {
|
||||||
|
assert.throw(() => rng.nextBytes(0));
|
||||||
|
});
|
||||||
|
it('nextBytes-1', () => {
|
||||||
|
assert.throw(() => rng.nextBytes(-1));
|
||||||
|
});
|
||||||
|
|
||||||
|
const randUtil = new RandUtil(rng);
|
||||||
|
it('utilEmptyChoice', () => {
|
||||||
|
assert.throw(() => randUtil.choice([]));
|
||||||
|
});
|
||||||
|
it('utilEmptyChoiceUsingWeight', () => {
|
||||||
|
assert.throw(() => randUtil.choiceUsingWeight({}));
|
||||||
|
});
|
||||||
|
it('utilEmptyChoiceUsingWeightPair', () => {
|
||||||
|
assert.throw(() => randUtil.choiceUsingWeightPair([]));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('RNGAcceptable', () => {
|
||||||
|
const rng = new LiteHashDRBG(fixedKey);
|
||||||
|
it('RNG', () => {
|
||||||
|
rng.nextInt(0);
|
||||||
|
rng.nextInt(2 ** 53 - 1);
|
||||||
|
rng.nextBytes(65);
|
||||||
|
rng.nextBits(512);
|
||||||
|
});
|
||||||
|
|
||||||
|
const randUtil = new RandUtil(rng);
|
||||||
|
it('RandUtil', () => {
|
||||||
|
randUtil.choice([0, 0, 0]);
|
||||||
|
randUtil.choiceUsingWeight({
|
||||||
|
0: 0,
|
||||||
|
1: -1
|
||||||
|
});
|
||||||
|
randUtil.choiceUsingWeightPair([
|
||||||
|
[0, 0],
|
||||||
|
[1, 0],
|
||||||
|
[2, -2]
|
||||||
|
]);
|
||||||
|
randUtil.nextBool(1.1);
|
||||||
|
randUtil.nextBool(-0.1);
|
||||||
|
randUtil.shuffle([]);
|
||||||
|
randUtil.shuffle([1]);
|
||||||
|
randUtil.nextRange(0, 0);
|
||||||
|
randUtil.nextRangeInt(0, 0);
|
||||||
|
randUtil.nextRange(1, -1);
|
||||||
|
randUtil.nextRangeInt(1, -1);
|
||||||
|
})
|
||||||
|
|
||||||
|
it('RNGLong', () => {
|
||||||
|
const longKey = fixedKey;
|
||||||
|
for(const _a of _.range(8)){
|
||||||
|
longKey.concat(longKey);
|
||||||
|
}
|
||||||
|
const rngLong = new LiteHashDRBG(longKey);
|
||||||
|
for(const _a of _.range(10)){
|
||||||
|
rngLong.nextBytes(16);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
/* Python TestVector
|
||||||
|
import hashlib
|
||||||
|
import struct
|
||||||
|
|
||||||
|
fixedKey = 'HelloWorld'.encode('utf-8')
|
||||||
|
|
||||||
|
def hash(key, idx):
|
||||||
|
idxV = struct.pack("<I", idx)
|
||||||
|
return hashlib.sha512(key + idxV).digest()
|
||||||
|
|
||||||
|
for idx in range(5):
|
||||||
|
print(hash(fixedKey, idx).hex())
|
||||||
|
*/
|
||||||
|
describe('RNG', () => {
|
||||||
|
|
||||||
|
//JS - PHP 일치 확인 정도로.
|
||||||
|
|
||||||
|
const testVector = Buffer.from([
|
||||||
|
'24d9ccd648556255fd0ee9f5b29918de90617341958b3b354d572167e4dee02b757816a2bbe0b502c52413ffd384381a9d7b4e193df6f4345d6a95e111d661c4',
|
||||||
|
'2e9264512f6f4b080cf1376b74fab6878ecf4a6e185942d2e5b22cf923885b9952d40601a414225d6901417fd4ce9368ac77e4a63d3fc9b58ab952bb8c33f165',
|
||||||
|
'8e2ebf5af6283a1b18f4c044c86c20d02be3890613c4cc8b7c6b7b35581263b972a82630df69a9289988422d7c3a9be5edf78d5de16fabd01e5dd4e458068d8a',
|
||||||
|
'398596047ba547bfe371ec863a3e019ab0dbc4bb3b27e9077685aae4283ff6bbccfd981d92f9358f7efffbb72a940414802d98466d132e2ad0a16a12946d5f47',
|
||||||
|
'b3606fe9b18c4aa7315e78bb9e47cb51cc4e203fcc2e631f0405c1b872c8e1cb5b6415ea74bbb77fffaaadb002b47cb4f4628dc0709634365b187667f5c708cb',
|
||||||
|
].join(''), 'hex');
|
||||||
|
|
||||||
|
it('bytes', ()=>{
|
||||||
|
const rng = new LiteHashDRBG(fixedKey);
|
||||||
|
|
||||||
|
let offset = 0;
|
||||||
|
assert.equalBytes(rng.nextBytes(10), testVector.slice(offset, offset + 10), '1');
|
||||||
|
offset += 10;
|
||||||
|
assert.equalBytes(rng.nextBytes(32), testVector.slice(offset, offset + 32), '2');
|
||||||
|
offset += 32;
|
||||||
|
assert.equalBytes(rng.nextBytes(1), testVector.slice(offset, offset + 1), '3');
|
||||||
|
offset += 1;
|
||||||
|
assert.equalBytes(rng.nextBytes(64), testVector.slice(offset, offset + 64), '4');
|
||||||
|
offset += 64;
|
||||||
|
assert.equalBytes(rng.nextBytes(5), testVector.slice(offset, offset + 5), '5');
|
||||||
|
offset += 5;
|
||||||
|
|
||||||
|
const lastA = rng.nextBytes(16, 18);
|
||||||
|
const lastB = new Uint8Array(18);
|
||||||
|
lastB.set(testVector.slice(offset, offset + 16));
|
||||||
|
assert.equalBytes(lastA, lastB);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('bits', ()=>{
|
||||||
|
const rng = new LiteHashDRBG(fixedKey);
|
||||||
|
|
||||||
|
let offset = 0;
|
||||||
|
|
||||||
|
const testBits = [10, 4, 15, 32, 7, 99, 512, 1, 2, 3];
|
||||||
|
|
||||||
|
for(const bits of testBits){
|
||||||
|
const bytes = Math.ceil(bits / 8)
|
||||||
|
const A = rng.nextBits(bits);
|
||||||
|
const B = new Uint8Array(testVector.slice(offset, offset + bytes));
|
||||||
|
offset += bytes;
|
||||||
|
|
||||||
|
if(bits % 8 != 0){
|
||||||
|
const bitMask = 0xff >> (8 - (bits % 8));
|
||||||
|
B[bytes - 1] &= bitMask;
|
||||||
|
}
|
||||||
|
assert.equalBytes(A, B);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('float', ()=>{
|
||||||
|
const rng = new LiteHashDRBG(fixedKey);
|
||||||
|
const rng2 = new DummyBlockRNG([
|
||||||
|
new Uint8Array(testVector.slice(bufferByteSize * 0, bufferByteSize * 1)),
|
||||||
|
new Uint8Array(testVector.slice(bufferByteSize * 1, bufferByteSize * 2)),
|
||||||
|
new Uint8Array(testVector.slice(bufferByteSize * 2, bufferByteSize * 3)),
|
||||||
|
new Uint8Array(testVector.slice(bufferByteSize * 3, bufferByteSize * 4)),
|
||||||
|
new Uint8Array(testVector.slice(bufferByteSize * 4, bufferByteSize * 5)),
|
||||||
|
]);
|
||||||
|
|
||||||
|
for(const idx of _.range(18)){
|
||||||
|
assert.equal(rng.nextFloat1(), rng2.nextFloat1(), `float${idx}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -260,7 +260,7 @@ function setupAdminForm() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
const validator = new JQValidateForm($('#db_form'), descriptor);
|
const validator = new JQValidateForm($('#admin_form'), descriptor);
|
||||||
validator.installChangeHandler();
|
validator.installChangeHandler();
|
||||||
|
|
||||||
$('#admin_form').on('submit', async function (e) {
|
$('#admin_form').on('submit', async function (e) {
|
||||||
@@ -278,7 +278,7 @@ function setupAdminForm() {
|
|||||||
let result: InvalidResponse;
|
let result: InvalidResponse;
|
||||||
try {
|
try {
|
||||||
const response = await axios({
|
const response = await axios({
|
||||||
url: 'j_setup_db.php',
|
url: 'j_create_admin.php',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
responseType: 'json',
|
responseType: 'json',
|
||||||
data: convertFormData({
|
data: convertFormData({
|
||||||
@@ -299,7 +299,7 @@ function setupAdminForm() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
alert('RootDB.php가 생성되었습니다. 관리자 계정 생성을 진행합니다.');
|
alert('관리자 계정이 생성되었습니다.');
|
||||||
await changeInstallMode();
|
await changeInstallMode();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
export type Bytes = ArrayBuffer | DataView | Uint8Array;
|
||||||
|
export type BytesLike = Bytes | string;
|
||||||
@@ -0,0 +1,232 @@
|
|||||||
|
import { RNG } from "./RNG";
|
||||||
|
|
||||||
|
import { sha512 } from 'js-sha512';
|
||||||
|
|
||||||
|
import { convertBytesLikeToUint8Array } from "./convertBytesLikeToUint8Array";
|
||||||
|
import { BytesLike } from "./BytesLike";
|
||||||
|
|
||||||
|
const maxRngSupportBit = 53;
|
||||||
|
const maxInt = 0x1f_ffff_ffff_ffff; // NOTE: b 0, 10000110011, 11...11
|
||||||
|
const maxIntMore1 = 0x20_0000_0000_0000n; //NOTE: b 0, 10000110100, 00...00
|
||||||
|
const maxIntMore1f = Number(maxIntMore1);
|
||||||
|
export const bufferByteSize = 512 / 8; //SHA512
|
||||||
|
|
||||||
|
const intBitMapMask = new Map([
|
||||||
|
[0x1n, 1],
|
||||||
|
[0x3n, 2],
|
||||||
|
[0x7n, 3],
|
||||||
|
[0xfn, 4],
|
||||||
|
[0x1fn, 5],
|
||||||
|
[0x3fn, 6],
|
||||||
|
[0x7fn, 7],
|
||||||
|
[0xffn, 8],
|
||||||
|
[0x1ffn, 9],
|
||||||
|
[0x3ffn, 10],
|
||||||
|
[0x7ffn, 11],
|
||||||
|
[0xfffn, 12],
|
||||||
|
[0x1fffn, 13],
|
||||||
|
[0x3fffn, 14],
|
||||||
|
[0x7fffn, 15],
|
||||||
|
[0xffffn, 16],
|
||||||
|
[0x1ffffn, 17],
|
||||||
|
[0x3ffffn, 18],
|
||||||
|
[0x7ffffn, 19],
|
||||||
|
[0xfffffn, 20],
|
||||||
|
[0x1fffffn, 21],
|
||||||
|
[0x3fffffn, 22],
|
||||||
|
[0x7fffffn, 23],
|
||||||
|
[0xffffffn, 24],
|
||||||
|
[0x1ffffffn, 25],
|
||||||
|
[0x3ffffffn, 26],
|
||||||
|
[0x7ffffffn, 27],
|
||||||
|
[0xfffffffn, 28],
|
||||||
|
[0x1fffffffn, 29],
|
||||||
|
[0x3fffffffn, 30],
|
||||||
|
[0x7fffffffn, 31],
|
||||||
|
[0xffffffffn, 32],
|
||||||
|
[0x1ffffffffn, 33],
|
||||||
|
[0x3ffffffffn, 34],
|
||||||
|
[0x7ffffffffn, 35],
|
||||||
|
[0xfffffffffn, 36],
|
||||||
|
[0x1fffffffffn, 37],
|
||||||
|
[0x3fffffffffn, 38],
|
||||||
|
[0x7fffffffffn, 39],
|
||||||
|
[0xffffffffffn, 40],
|
||||||
|
[0x1ffffffffffn, 41],
|
||||||
|
[0x3ffffffffffn, 42],
|
||||||
|
[0x7ffffffffffn, 43],
|
||||||
|
[0xfffffffffffn, 44],
|
||||||
|
[0x1fffffffffffn, 45],
|
||||||
|
[0x3fffffffffffn, 46],
|
||||||
|
[0x7fffffffffffn, 47],
|
||||||
|
[0xffffffffffffn, 48],
|
||||||
|
[0x1ffffffffffffn, 49],
|
||||||
|
[0x3ffffffffffffn, 50],
|
||||||
|
[0x7ffffffffffffn, 51],
|
||||||
|
[0xfffffffffffffn, 52],
|
||||||
|
[0x1fffffffffffffn, 53],
|
||||||
|
]);
|
||||||
|
|
||||||
|
function calcBitMask(n: bigint): bigint {
|
||||||
|
n |= n >> 1n;
|
||||||
|
n |= n >> 2n;
|
||||||
|
n |= n >> 4n;
|
||||||
|
n |= n >> 8n;
|
||||||
|
n |= n >> 16n;
|
||||||
|
n |= n >> 32n;
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
export class LiteHashDRBG implements RNG {
|
||||||
|
|
||||||
|
protected buffer!: ArrayBuffer;
|
||||||
|
protected bufferIdx!: number;
|
||||||
|
protected hq: DataView;
|
||||||
|
protected hqIdxPos: number;
|
||||||
|
|
||||||
|
public constructor(protected seed: BytesLike, protected stateIdx = 0, bufferIdx = 0) {
|
||||||
|
if(bufferIdx < 0){
|
||||||
|
throw new Error(`bufferIdx ${bufferIdx} < 0`);
|
||||||
|
}
|
||||||
|
if(bufferIdx >= bufferByteSize){
|
||||||
|
throw new Error(`bufferidx ${bufferIdx} >= ${bufferByteSize}`);
|
||||||
|
}
|
||||||
|
if(stateIdx < 0){
|
||||||
|
throw new Error(`stateIdx ${stateIdx} < 0`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const seedU8 = convertBytesLikeToUint8Array(seed);
|
||||||
|
const hqBuffer = new ArrayBuffer(seedU8.byteLength + 4);
|
||||||
|
const hqU8 = new Uint8Array(hqBuffer);
|
||||||
|
|
||||||
|
hqU8.set(seedU8, 0);
|
||||||
|
this.hq = new DataView(hqBuffer);
|
||||||
|
this.hqIdxPos = seedU8.byteLength;
|
||||||
|
|
||||||
|
this.genNextBlock();
|
||||||
|
this.bufferIdx = bufferIdx;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected genNextBlock(): void {
|
||||||
|
this.hq.setUint32(this.hqIdxPos, this.stateIdx, true);
|
||||||
|
const digest = sha512.arrayBuffer(this.hq.buffer);
|
||||||
|
this.buffer = digest;
|
||||||
|
this.bufferIdx = 0;
|
||||||
|
this.stateIdx += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getMaxInt(): number {
|
||||||
|
return maxInt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextBytes(bytes: number, baseBytes?: number): Uint8Array {
|
||||||
|
bytes |= 0;
|
||||||
|
if (bytes <= 0) {
|
||||||
|
throw new Error(`${bytes} <= 0`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.bufferIdx + bytes <= bufferByteSize) {
|
||||||
|
if(baseBytes === undefined || bytes >= baseBytes){
|
||||||
|
const result = this.buffer.slice(this.bufferIdx, this.bufferIdx + bytes);
|
||||||
|
this.bufferIdx += bytes;
|
||||||
|
if (this.bufferIdx === bufferByteSize) {
|
||||||
|
this.genNextBlock();
|
||||||
|
}
|
||||||
|
return new Uint8Array(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
const resultBuffer = new ArrayBuffer(Math.max(bytes, baseBytes));
|
||||||
|
const result = new Uint8Array(resultBuffer);
|
||||||
|
result.set(new Uint8Array(this.buffer, this.bufferIdx, bytes));
|
||||||
|
this.bufferIdx += bytes;
|
||||||
|
if( this.bufferIdx === bufferByteSize){
|
||||||
|
this.genNextBlock();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
const resultBuffer = new ArrayBuffer(baseBytes ? Math.max(bytes, baseBytes) : bytes);
|
||||||
|
const result = new Uint8Array(resultBuffer);
|
||||||
|
|
||||||
|
result.set(new Uint8Array(this.buffer, this.bufferIdx));
|
||||||
|
let offset = bufferByteSize - this.bufferIdx;
|
||||||
|
let remain = bytes - offset;
|
||||||
|
|
||||||
|
while (remain > bufferByteSize) {
|
||||||
|
this.genNextBlock();
|
||||||
|
result.set(new Uint8Array(this.buffer), offset);
|
||||||
|
offset += bufferByteSize;
|
||||||
|
remain -= bufferByteSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.genNextBlock();
|
||||||
|
if (remain === 0) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result.set(new Uint8Array(this.buffer, 0, remain), offset);
|
||||||
|
this.bufferIdx = remain;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextBits(bits: number, baseBytes?: number): Uint8Array {
|
||||||
|
bits |= 0;
|
||||||
|
const bytes = (bits + 7) >> 3;
|
||||||
|
const headBits = bits & 0x7;
|
||||||
|
|
||||||
|
const result = this.nextBytes(bytes, baseBytes);
|
||||||
|
if (headBits === 0) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result[bytes - 1] &= 0xff >> (8 - headBits);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected _nextInt(bits: number): bigint{
|
||||||
|
const buffer = this.nextBits(bits, 8);
|
||||||
|
const dataView = new DataView(buffer.buffer);
|
||||||
|
return dataView.getBigUint64(0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextInt(max?: number): number {
|
||||||
|
if (max === undefined || max === maxInt) {
|
||||||
|
return Number(this._nextInt(maxRngSupportBit));
|
||||||
|
}
|
||||||
|
if (max > maxInt) {
|
||||||
|
throw new Error('Over max int');
|
||||||
|
}
|
||||||
|
if (max === 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (max < 0) {
|
||||||
|
return -this.nextInt(-max);
|
||||||
|
}
|
||||||
|
|
||||||
|
const mask = calcBitMask(BigInt(max));
|
||||||
|
const bits = intBitMapMask.get(mask) as number;
|
||||||
|
|
||||||
|
let n = Number(this._nextInt(bits));
|
||||||
|
while (n > max){
|
||||||
|
n = Number(this._nextInt(bits));
|
||||||
|
}
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextFloat1(): number {
|
||||||
|
// eslint-disable-next-line no-constant-condition
|
||||||
|
while(true){
|
||||||
|
const nInt = this._nextInt(maxRngSupportBit + 1);
|
||||||
|
if(nInt < maxIntMore1){
|
||||||
|
return Number(nInt) / maxIntMore1f;
|
||||||
|
}
|
||||||
|
if(nInt === maxIntMore1){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static build(seed: BytesLike, stateIdx = 0): LiteHashDRBG{
|
||||||
|
return new LiteHashDRBG(seed, stateIdx);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
export interface RNG {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nextInt()가 반환 가능한 최대값
|
||||||
|
*/
|
||||||
|
getMaxInt(): number;
|
||||||
|
|
||||||
|
nextBytes(bytes: number): Uint8Array;
|
||||||
|
nextBits(bits: number): Uint8Array;
|
||||||
|
|
||||||
|
nextInt(max?: number): number;
|
||||||
|
nextFloat1(): number;
|
||||||
|
}
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
import { RNG } from './RNG';
|
||||||
|
|
||||||
|
export class RandUtil {
|
||||||
|
constructor(protected rng: RNG) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextFloat1(): number {
|
||||||
|
return this.rng.nextFloat1();
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextRange(min: number, max: number): number {
|
||||||
|
const range = max - min;
|
||||||
|
return this.nextFloat1() * (range) + min;
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextRangeInt(min: number, max: number): number {
|
||||||
|
const range = max - min;
|
||||||
|
return this.rng.nextInt(range) + min;
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextInt(max?: number): number {
|
||||||
|
return this.rng.nextInt(max);
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextBit(): boolean {
|
||||||
|
const view = new DataView(this.rng.nextBits(1));
|
||||||
|
return view.getUint8(0) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextBool(prob = 0.5): boolean {
|
||||||
|
if (prob >= 1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return this.nextFloat1() < prob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public shuffle<T>(srcArray: T[]): T[] {
|
||||||
|
const cnt = srcArray.length;
|
||||||
|
if(cnt === 0){
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
if (cnt > this.rng.getMaxInt()) {
|
||||||
|
throw 'Invalid random int range';
|
||||||
|
}
|
||||||
|
|
||||||
|
const result: T[] = Array.from(srcArray);
|
||||||
|
for (let srcIdx = 0; srcIdx < cnt; srcIdx += 1) {
|
||||||
|
const destIdx = this.rng.nextInt(cnt - srcIdx - 1) + srcIdx;
|
||||||
|
if(srcIdx === destIdx){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
[result[srcIdx], result[destIdx]] = [result[destIdx], result[srcIdx]];
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Object는 integer key에 예외가 있어 shuffleAssoc은 없음
|
||||||
|
|
||||||
|
public choice<T>(items: T[] | Record<string | number, T> | Set<T>): T {
|
||||||
|
if (items instanceof Array) {
|
||||||
|
if(items.length === 0){
|
||||||
|
throw new Error('Empty items');
|
||||||
|
}
|
||||||
|
const idx = this.rng.nextInt(items.length - 1);
|
||||||
|
return items[idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (items instanceof Set) {
|
||||||
|
return this.choice(Array.from(items.values()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return items[this.choice(Array.from(Object.keys(items)))];
|
||||||
|
}
|
||||||
|
|
||||||
|
public choiceUsingWeight(items: Record<string | number, number>): string | number {
|
||||||
|
if(Object.keys(items).length === 0){
|
||||||
|
throw new Error('Empty items');
|
||||||
|
}
|
||||||
|
let sum = 0;
|
||||||
|
for (const value of Object.values(items)) {
|
||||||
|
if (value <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
sum += value;
|
||||||
|
}
|
||||||
|
|
||||||
|
let rd = this.nextFloat1() * sum;
|
||||||
|
|
||||||
|
for (const [item, value] of Object.entries(items)) {
|
||||||
|
if (value <= 0) {
|
||||||
|
if (rd <= 0) {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rd <= value) {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
rd -= value;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error('Unreacheable');
|
||||||
|
}
|
||||||
|
|
||||||
|
public choiceUsingWeightPair<T>(items: [T, number][]): T {
|
||||||
|
if(items.length === 0){
|
||||||
|
throw new Error('Empty items');
|
||||||
|
}
|
||||||
|
let sum = 0;
|
||||||
|
for (const [, value] of items) {
|
||||||
|
if (value <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
sum += value;
|
||||||
|
}
|
||||||
|
|
||||||
|
let rd = this.nextFloat1() * sum;
|
||||||
|
|
||||||
|
for (const [item, value] of items) {
|
||||||
|
if (value <= 0) {
|
||||||
|
if (rd <= 0) {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rd <= value) {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
rd -= value;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error('Unreacheable');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,13 +16,10 @@ export async function callSammoAPI<ResultType extends ValidResponse, ErrorType e
|
|||||||
}
|
}
|
||||||
|
|
||||||
const response = await axios({
|
const response = await axios({
|
||||||
url: "api.php",
|
url: `api.php?path=${path}`,
|
||||||
method: "post",
|
method: "post",
|
||||||
responseType: "json",
|
responseType: "json",
|
||||||
data: {
|
data: args
|
||||||
path,
|
|
||||||
args,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
const result: ErrorType | ResultType = response.data;
|
const result: ErrorType | ResultType = response.data;
|
||||||
if (!result.result) {
|
if (!result.result) {
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import { BytesLike } from "./BytesLike";
|
||||||
|
|
||||||
|
export function convertBytesLikeToArrayBuffer(data: BytesLike, encodeUTF8 = true): ArrayBuffer{
|
||||||
|
if (data instanceof ArrayBuffer) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
if (data instanceof Uint8Array) {
|
||||||
|
return data.buffer;
|
||||||
|
}
|
||||||
|
if (typeof(data) === 'string'){
|
||||||
|
if(encodeUTF8){
|
||||||
|
return (new TextEncoder()).encode(data);
|
||||||
|
}
|
||||||
|
return new Uint8Array(data.split('').map(s=>s.codePointAt(0) as number));
|
||||||
|
}
|
||||||
|
return data.buffer;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import { BytesLike } from "./BytesLike";
|
||||||
|
|
||||||
|
export function convertBytesLikeToUint8Array(data: BytesLike, encodeUTF8 = true): Uint8Array {
|
||||||
|
if (data instanceof Uint8Array) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
if (data instanceof ArrayBuffer) {
|
||||||
|
return new Uint8Array(data);
|
||||||
|
}
|
||||||
|
if (typeof (data) === 'string') {
|
||||||
|
if(encodeUTF8){
|
||||||
|
return (new TextEncoder()).encode(data);
|
||||||
|
}
|
||||||
|
return new Uint8Array(data.split('').map(s=>s.codePointAt(0) as number));
|
||||||
|
}
|
||||||
|
return new Uint8Array(data.buffer);
|
||||||
|
}
|
||||||
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
if (!file_exists(__DIR__ . '/vendor/autoload.php')){
|
||||||
|
header('Location:install.php');
|
||||||
|
die();
|
||||||
|
}
|
||||||
require(__DIR__ . '/vendor/autoload.php');
|
require(__DIR__ . '/vendor/autoload.php');
|
||||||
|
|
||||||
if (!class_exists('\\sammo\\RootDB')) {
|
if (!class_exists('\\sammo\\RootDB')) {
|
||||||
|
|||||||
+107
-22
@@ -3,27 +3,39 @@ namespace sammo;
|
|||||||
|
|
||||||
set_time_limit(600);
|
set_time_limit(600);
|
||||||
|
|
||||||
function tryNpmInstall()
|
|
||||||
|
class Json
|
||||||
{
|
{
|
||||||
$npmResultPath = 'npm_recent.json.log';
|
/** @return never */
|
||||||
$packageJsonPath = 'package.json';
|
public static function die($value)
|
||||||
$packageJsonLockPath = 'package-lock.json';
|
{
|
||||||
|
if (!headers_sent()) {
|
||||||
|
header('Expires: Wed, 01 Jan 2014 00:00:00 GMT');
|
||||||
|
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||||
|
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||||
|
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||||
|
header('Pragma: no-cache');
|
||||||
|
}
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
die(json_encode($value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function tryComposerInstall()
|
||||||
|
{
|
||||||
|
$resultPath = 'composer_result.json.log';
|
||||||
|
$lockPath = 'composer.lock';
|
||||||
|
$runCode = "php composer.phar install";
|
||||||
|
|
||||||
$packageJsonHash = hash_file('sha512', $packageJsonPath);
|
|
||||||
$timestamp = time();
|
$timestamp = time();
|
||||||
if (file_exists($npmResultPath) && file_exists($packageJsonLockPath)) {
|
if (file_exists($resultPath) && file_exists($lockPath)) {
|
||||||
do {
|
do {
|
||||||
$result = json_decode(file_get_contents($npmResultPath));
|
$result = json_decode(file_get_contents($resultPath));
|
||||||
$oldJsonHash = $result->packageJsonHash;
|
$oldJsonHash = $result->lockHash;
|
||||||
$oldTimestamp = $result->updateTimestamp;
|
$lockHash = hash_file('sha512', $lockPath);
|
||||||
|
|
||||||
//1. package.json 파일이 다르면 업데이트.
|
if ($lockHash != $oldJsonHash) {
|
||||||
if ($packageJsonHash != $oldJsonHash) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//2. package-lock.json 업데이트가 2주를 초과했다면 업데이트.
|
|
||||||
if($oldTimestamp + 60*60*24*14 < $timestamp){
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,32 +44,105 @@ function tryNpmInstall()
|
|||||||
} while (0);
|
} while (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
exec("npm install", $output, $result_code);
|
exec($runCode, $output, $result_code);
|
||||||
if ($result_code != 0) {
|
if ($result_code != 0) {
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
'reason' => $output
|
'reason' => $output,
|
||||||
|
'state' => 'composer',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
file_put_contents($npmResultPath, json_encode([
|
if (!file_exists($lockPath)){
|
||||||
'packageJsonHash'=>$packageJsonHash,
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => "no lockfile: {$lockPath}"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$lockHash = hash_file('sha512', $lockPath);
|
||||||
|
|
||||||
|
|
||||||
|
file_put_contents($resultPath, json_encode([
|
||||||
|
'lockHash'=>$lockHash,
|
||||||
'updateTimestamp'=>$timestamp,
|
'updateTimestamp'=>$timestamp,
|
||||||
]));
|
]));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function tryNpmInstall()
|
||||||
|
{
|
||||||
|
$resultPath = 'npm_recent.json.log';
|
||||||
|
$lockPath = 'package-lock.json';
|
||||||
|
$runCode = "npm ci";
|
||||||
|
$runAltCode = "npm install";
|
||||||
|
|
||||||
|
$timestamp = time();
|
||||||
|
if (file_exists($resultPath) && file_exists($lockPath)) {
|
||||||
|
do {
|
||||||
|
$result = json_decode(file_get_contents($resultPath));
|
||||||
|
$oldJsonHash = $result->lockHash;
|
||||||
|
$lockHash = hash_file('sha512', $lockPath);
|
||||||
|
|
||||||
|
if ($lockHash != $oldJsonHash) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//그것도 아니라면 업데이트하지 않겠다.
|
||||||
|
return false;
|
||||||
|
} while (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(file_exists($lockPath)){
|
||||||
|
exec($runCode, $output, $result_code);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
exec($runAltCode, $output, $result_code);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result_code != 0) {
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => $output,
|
||||||
|
'state' => 'npm ci',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!file_exists($lockPath)){
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => "no lockfile: {$lockPath}"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$lockHash = hash_file('sha512', $lockPath);
|
||||||
|
|
||||||
|
|
||||||
|
file_put_contents($resultPath, json_encode([
|
||||||
|
'lockHash'=>$lockHash,
|
||||||
|
'updateTimestamp'=>$timestamp,
|
||||||
|
]));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function genJS()
|
function genJS()
|
||||||
{
|
{
|
||||||
$command = "./node_modules/.bin/webpack build";
|
$command = sprintf("./node_modules/.bin/webpack build --env target=gateway");
|
||||||
|
|
||||||
exec(($command), $output, $result_code);
|
exec(($command), $output, $result_code);
|
||||||
if ($result_code != 0) {
|
if ($result_code != 0) {
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
'reason' => $output
|
'reason' => $output,
|
||||||
|
'state' => 'webpack build',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(tryComposerInstall()){
|
||||||
|
header('location:install.php');
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
if(tryNpmInstall()){
|
if(tryNpmInstall()){
|
||||||
genJS();
|
genJS();
|
||||||
}
|
}
|
||||||
|
|||||||
+80
-22
@@ -66,27 +66,20 @@ function genJS($server)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryNpmInstall()
|
function tryComposerInstall()
|
||||||
{
|
{
|
||||||
$npmResultPath = './npm_recent.json.log';
|
$resultPath = 'composer_result.json.log';
|
||||||
$packageJsonPath = './package.json';
|
$lockPath = 'composer.lock';
|
||||||
$packageJsonLockPath = './package-lock.json';
|
$runCode = "php composer.phar install";
|
||||||
|
|
||||||
$packageJsonHash = hash_file('sha512', $packageJsonPath);
|
|
||||||
$timestamp = time();
|
$timestamp = time();
|
||||||
if (file_exists($npmResultPath) && file_exists($packageJsonLockPath)) {
|
if (file_exists($resultPath) && file_exists($lockPath)) {
|
||||||
do {
|
do {
|
||||||
$result = json_decode(file_get_contents($npmResultPath));
|
$result = json_decode(file_get_contents($resultPath));
|
||||||
$oldJsonHash = $result->packageJsonHash;
|
$oldJsonHash = $result->lockHash;
|
||||||
$oldTimestamp = $result->updateTimestamp;
|
$lockHash = hash_file('sha512', $lockPath);
|
||||||
|
|
||||||
//1. package.json 파일이 다르면 업데이트.
|
if ($lockHash != $oldJsonHash) {
|
||||||
if ($packageJsonHash != $oldJsonHash) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//2. package-lock.json 업데이트가 2주를 초과했다면 업데이트.
|
|
||||||
if ($oldTimestamp + 60 * 60 * 24 * 14 < $timestamp) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,7 +88,7 @@ function tryNpmInstall()
|
|||||||
} while (0);
|
} while (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
exec("npm install", $output, $result_code);
|
exec($runCode, $output, $result_code);
|
||||||
if ($result_code != 0) {
|
if ($result_code != 0) {
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
@@ -103,16 +96,80 @@ function tryNpmInstall()
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
file_put_contents($npmResultPath, json_encode([
|
if (!file_exists($lockPath)){
|
||||||
'packageJsonHash' => $packageJsonHash,
|
Json::die([
|
||||||
'updateTimestamp' => $timestamp,
|
'result' => false,
|
||||||
|
'reason' => "no lockfile: {$lockPath}"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$lockHash = hash_file('sha512', $lockPath);
|
||||||
|
|
||||||
|
|
||||||
|
file_put_contents($resultPath, json_encode([
|
||||||
|
'lockHash'=>$lockHash,
|
||||||
|
'updateTimestamp'=>$timestamp,
|
||||||
]));
|
]));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//묻고 따지지 않고 일단 npm install은 시도한다.
|
|
||||||
|
function tryNpmInstall()
|
||||||
|
{
|
||||||
|
$resultPath = 'npm_recent.json.log';
|
||||||
|
$lockPath = 'package-lock.json';
|
||||||
|
$runCode = "npm ci";
|
||||||
|
$runAltCode = "npm install";
|
||||||
|
|
||||||
|
$timestamp = time();
|
||||||
|
if (file_exists($resultPath) && file_exists($lockPath)) {
|
||||||
|
do {
|
||||||
|
$result = json_decode(file_get_contents($resultPath));
|
||||||
|
$oldJsonHash = $result->lockHash;
|
||||||
|
$lockHash = hash_file('sha512', $lockPath);
|
||||||
|
|
||||||
|
if ($lockHash != $oldJsonHash) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//그것도 아니라면 업데이트하지 않겠다.
|
||||||
|
return false;
|
||||||
|
} while (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(file_exists($lockPath)){
|
||||||
|
exec($runCode, $output, $result_code);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
exec($runAltCode, $output, $result_code);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result_code != 0) {
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => $output
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!file_exists($lockPath)){
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => "no lockfile: {$lockPath}"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$lockHash = hash_file('sha512', $lockPath);
|
||||||
|
|
||||||
|
|
||||||
|
file_put_contents($resultPath, json_encode([
|
||||||
|
'lockHash'=>$lockHash,
|
||||||
|
'updateTimestamp'=>$timestamp,
|
||||||
|
]));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//묻고 따지지 않고 일단 composer install, npm install은 시도한다.
|
||||||
//hwe 업데이트인 경우에만 한번 더 부른다.
|
//hwe 업데이트인 경우에만 한번 더 부른다.
|
||||||
|
|
||||||
|
tryComposerInstall();
|
||||||
if (tryNpmInstall()) {
|
if (tryNpmInstall()) {
|
||||||
genJS(Util::array_last_key(ServConfig::getServerList()));
|
genJS(Util::array_last_key(ServConfig::getServerList()));
|
||||||
}
|
}
|
||||||
@@ -268,7 +325,8 @@ if ($server == $baseServerName) {
|
|||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
//git 업데이트했는데, package.json이 바뀌면 곤란하니까
|
//git 업데이트했는데, package가 바뀌면 곤란하니까
|
||||||
|
tryComposerInstall();
|
||||||
tryNpmInstall();
|
tryNpmInstall();
|
||||||
genJS($server);
|
genJS($server);
|
||||||
|
|
||||||
|
|||||||
@@ -138,12 +138,13 @@ if (!$userInfo) {
|
|||||||
'aux' => $session->tmpx,
|
'aux' => $session->tmpx,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
$userID = $userInfo['no'];
|
||||||
|
|
||||||
if ($userInfo['delete_after']) {
|
if ($userInfo['delete_after']) {
|
||||||
if ($userInfo['delete_after'] < $now) {
|
if ($userInfo['delete_after'] < $now) {
|
||||||
$restAPI->unlink();
|
$restAPI->unlink();
|
||||||
$session->access_token = null;
|
$session->access_token = null;
|
||||||
$RootDB->delete('member', 'no=%i', $userInfo['no']);
|
$RootDB->delete('member', 'no=%i', $userID);
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
'reqOTP' => false,
|
'reqOTP' => false,
|
||||||
@@ -170,20 +171,20 @@ if ($refresh_token) {
|
|||||||
|
|
||||||
RootDB::db()->update('member', [
|
RootDB::db()->update('member', [
|
||||||
'oauth_info' => Json::encode($oauthInfo)
|
'oauth_info' => Json::encode($oauthInfo)
|
||||||
], 'no=%i', $userInfo['no']);
|
], 'no=%i', $userID);
|
||||||
|
|
||||||
|
|
||||||
$tokenValidUntil = $userInfo['token_valid_until'];
|
$tokenValidUntil = $userInfo['token_valid_until'];
|
||||||
|
|
||||||
if (!$tokenValidUntil || $tokenValidUntil < $now) {
|
if (!$tokenValidUntil || $tokenValidUntil < $now) {
|
||||||
if (!createOTPbyUserNO($userInfo['no'])) {
|
if (!createOTPbyUserNO($userID)) {
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
'reqOTP' => false,
|
'reqOTP' => false,
|
||||||
'reason' => '인증 코드를 보내는데 실패했습니다.'
|
'reason' => '인증 코드를 보내는데 실패했습니다.'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$session->login($userInfo['no'], $userInfo['id'], $userInfo['grade'], true, $userInfo['token_valid_until'], null, Json::decode($userInfo['acl'] ?? '{}'));
|
$session->login($userID, $userInfo['id'], $userInfo['grade'], true, $userInfo['token_valid_until'], null, Json::decode($userInfo['acl'] ?? '{}'));
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
'reqOTP' => true,
|
'reqOTP' => true,
|
||||||
@@ -192,8 +193,9 @@ if (!$tokenValidUntil || $tokenValidUntil < $now) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$RootDB->insert('member_log', [
|
$RootDB->insert('member_log', [
|
||||||
'member_no' => $userInfo['no'],
|
'member_no' => $userID,
|
||||||
'action_type' => 'login',
|
'action_type' => 'login',
|
||||||
'action' => Json::encode([
|
'action' => Json::encode([
|
||||||
'ip' => Util::get_client_ip(true),
|
'ip' => Util::get_client_ip(true),
|
||||||
@@ -225,7 +227,7 @@ $RootDB->query(
|
|||||||
);
|
);
|
||||||
$token = Util::randomStr(20);
|
$token = Util::randomStr(20);
|
||||||
$RootDB->insert('login_token', [
|
$RootDB->insert('login_token', [
|
||||||
'user_id' => $userInfo['no'],
|
'user_id' => $userID,
|
||||||
'base_token' => $token,
|
'base_token' => $token,
|
||||||
'reg_ip' => Util::get_client_ip(true),
|
'reg_ip' => Util::get_client_ip(true),
|
||||||
'reg_date' => $nowDate,
|
'reg_date' => $nowDate,
|
||||||
@@ -233,7 +235,7 @@ $RootDB->insert('login_token', [
|
|||||||
]);
|
]);
|
||||||
$tokenID = $RootDB->insertId();
|
$tokenID = $RootDB->insertId();
|
||||||
|
|
||||||
$session->login($userInfo['no'], $userInfo['id'], $userInfo['grade'], false, $userInfo['token_valid_until'], $tokenID, Json::decode($userInfo['acl'] ?? '{}'));
|
$session->login($userID, $userInfo['id'], $userInfo['grade'], false, $userInfo['token_valid_until'], $tokenID, Json::decode($userInfo['acl'] ?? '{}'));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Generated
+16227
File diff suppressed because it is too large
Load Diff
+50
-43
@@ -4,7 +4,9 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"main": "js/index.js",
|
"main": "js/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "npm-run-all test-php-gateway test-ts",
|
||||||
|
"test-php-gateway": "vendor/bin/phpunit --bootstrap vendor/autoload.php tests",
|
||||||
|
"test-ts": "mocha",
|
||||||
"build": "webpack",
|
"build": "webpack",
|
||||||
"buildDev": "webpack --mode=development",
|
"buildDev": "webpack --mode=development",
|
||||||
"watch": "webpack watch --mode=development",
|
"watch": "webpack watch --mode=development",
|
||||||
@@ -20,7 +22,11 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@popperjs/core": "^2.11.2",
|
"@babel/cli": "^7.17.6",
|
||||||
|
"@babel/core": "^7.17.5",
|
||||||
|
"@babel/preset-env": "^7.16.11",
|
||||||
|
"@babel/preset-typescript": "^7.16.7",
|
||||||
|
"@popperjs/core": "^2.11.3",
|
||||||
"@tiptap/extension-color": "^2.0.0-beta.9",
|
"@tiptap/extension-color": "^2.0.0-beta.9",
|
||||||
"@tiptap/extension-image": "^2.0.0-beta.27",
|
"@tiptap/extension-image": "^2.0.0-beta.27",
|
||||||
"@tiptap/extension-link": "^2.0.0-beta.36",
|
"@tiptap/extension-link": "^2.0.0-beta.36",
|
||||||
@@ -30,70 +36,71 @@
|
|||||||
"@tiptap/starter-kit": "^2.0.0-beta.183",
|
"@tiptap/starter-kit": "^2.0.0-beta.183",
|
||||||
"@tiptap/vue-3": "^2.0.0-beta.90",
|
"@tiptap/vue-3": "^2.0.0-beta.90",
|
||||||
"@types/bootstrap": "^5.1.9",
|
"@types/bootstrap": "^5.1.9",
|
||||||
|
"@types/chai": "^4.3.0",
|
||||||
"@types/downloadjs": "^1.4.3",
|
"@types/downloadjs": "^1.4.3",
|
||||||
|
"@types/jquery": "^3.5.14",
|
||||||
"@types/linkifyjs": "^2.1.4",
|
"@types/linkifyjs": "^2.1.4",
|
||||||
|
"@types/lodash": "^4.14.179",
|
||||||
|
"@types/mocha": "^9.1.0",
|
||||||
|
"@types/node": "^17.0.21",
|
||||||
|
"@types/react": "file:hwe/ts/@types/types__react",
|
||||||
"@types/select2": "^4.0.55",
|
"@types/select2": "^4.0.55",
|
||||||
"@types/uuid": "^8.3.4",
|
"@types/uuid": "^8.3.4",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.14.0",
|
||||||
|
"@typescript-eslint/parser": "^5.14.0",
|
||||||
|
"@vue/compiler-sfc": "^3.2.31",
|
||||||
|
"@vue/eslint-config-typescript": "^10.0.0",
|
||||||
"async-validator": "^4.0.7",
|
"async-validator": "^4.0.7",
|
||||||
"axios": "^0.26.0",
|
"autoprefixer": "^10.4.2",
|
||||||
|
"axios": "^0.26.1",
|
||||||
|
"babel-plugin-lodash": "^3.3.4",
|
||||||
|
"babel-preset-modern-browsers": "^15.0.2",
|
||||||
"bootstrap": "^5.1.3",
|
"bootstrap": "^5.1.3",
|
||||||
"bootstrap-vue-3": "^0.1.6",
|
"bootstrap-vue-3": "=0.1.6",
|
||||||
|
"bootswatch": "^5.1.3",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
|
"chai": "^4.3.6",
|
||||||
|
"chai-bytes": "^0.1.2",
|
||||||
|
"clean-terminal-webpack-plugin": "^3.0.0",
|
||||||
"core-js": "^3.21.1",
|
"core-js": "^3.21.1",
|
||||||
|
"css-loader": "^6.7.1",
|
||||||
|
"cssnano": "^5.1.3",
|
||||||
"date-fns": "^2.28.0",
|
"date-fns": "^2.28.0",
|
||||||
"downloadjs": "^1.4.7",
|
"downloadjs": "^1.4.7",
|
||||||
|
"esbuild-loader": "^2.18.0",
|
||||||
|
"eslint": "^8.11.0",
|
||||||
"eslint-import-resolver-alias": "^1.1.2",
|
"eslint-import-resolver-alias": "^1.1.2",
|
||||||
|
"eslint-plugin-vue": "^8.5.0",
|
||||||
|
"file-loader": "^6.2.0",
|
||||||
"jquery": "^3.6.0",
|
"jquery": "^3.6.0",
|
||||||
"js-sha512": "^0.8.0",
|
"js-sha512": "^0.8.0",
|
||||||
"linkifyjs": "^3.0",
|
"linkifyjs": "^3.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"query-string": "^7.1.1",
|
"mini-css-extract-plugin": "^2.6.0",
|
||||||
"select2": "^4.0",
|
"mocha": "^9.2.2",
|
||||||
"uuid": "^8.3.2",
|
"npm-run-all": "^4.1.5",
|
||||||
"vue": "^3.2.31",
|
"postcss-discard-duplicates": "^5.1.0",
|
||||||
"vue-multiselect": "^3.0.0-alpha.2",
|
|
||||||
"vue-types": "^4.1.1",
|
|
||||||
"vuedraggable": "^4.1.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/cli": "^7.17.3",
|
|
||||||
"@babel/core": "^7.17.5",
|
|
||||||
"@babel/preset-env": "^7.16.11",
|
|
||||||
"@babel/preset-typescript": "^7.16.7",
|
|
||||||
"@types/jquery": "^3.5.13",
|
|
||||||
"@types/lodash": "^4.14.178",
|
|
||||||
"@types/node": "^17.0.18",
|
|
||||||
"@types/react": "file:hwe/ts/@types/types__react",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^5.12.0",
|
|
||||||
"@typescript-eslint/parser": "^5.12.0",
|
|
||||||
"@vue/compiler-sfc": "^3.2.31",
|
|
||||||
"@vue/eslint-config-typescript": "^10.0.0",
|
|
||||||
"autoprefixer": "^10.4.2",
|
|
||||||
"babel-plugin-lodash": "^3.3.4",
|
|
||||||
"babel-preset-modern-browsers": "^15.0.2",
|
|
||||||
"bootswatch": "^5.1.3",
|
|
||||||
"clean-terminal-webpack-plugin": "^3.0.0",
|
|
||||||
"css-loader": "^6.6.0",
|
|
||||||
"cssnano": "^5.0.17",
|
|
||||||
"esbuild-loader": "^2.18.0",
|
|
||||||
"eslint": "^8.9.0",
|
|
||||||
"eslint-plugin-vue": "^8.4.1",
|
|
||||||
"file-loader": "^6.2.0",
|
|
||||||
"mini-css-extract-plugin": "^2.5.3",
|
|
||||||
"postcss-discard-duplicates": "^5.0.3",
|
|
||||||
"postcss-import": "^14.0.2",
|
"postcss-import": "^14.0.2",
|
||||||
"postcss-loader": "^6.2.1",
|
"postcss-loader": "^6.2.1",
|
||||||
"pre-commit": "^1.2.2",
|
"pre-commit": "^1.2.2",
|
||||||
"sass": "^1.49.8",
|
"query-string": "^7.1.1",
|
||||||
|
"sass": "^1.49.9",
|
||||||
"sass-loader": "^12.6.0",
|
"sass-loader": "^12.6.0",
|
||||||
|
"select2": "^4.0",
|
||||||
"style-loader": "^3.3.1",
|
"style-loader": "^3.3.1",
|
||||||
"ts-node": "^10.5.0",
|
"ts-node": "^10.7.0",
|
||||||
"typescript": "^4.5.5",
|
"tsconfig-paths": "^3.13.0",
|
||||||
|
"typescript": "^4.6.2",
|
||||||
"url-loader": "^4.1.1",
|
"url-loader": "^4.1.1",
|
||||||
"vue-eslint-parser": "^8.2.0",
|
"uuid": "^8.3.2",
|
||||||
|
"vue": "^3.2.31",
|
||||||
|
"vue-eslint-parser": "^8.3.0",
|
||||||
"vue-loader": "^17.0.0",
|
"vue-loader": "^17.0.0",
|
||||||
|
"vue-multiselect": "^3.0.0-alpha.2",
|
||||||
"vue-style-loader": "^4.1.3",
|
"vue-style-loader": "^4.1.3",
|
||||||
"webpack": "^5.69.1",
|
"vue-types": "^4.1.1",
|
||||||
|
"vuedraggable": "^4.1.0",
|
||||||
|
"webpack": "^5.70.0",
|
||||||
"webpack-bundle-analyzer": "^4.5.0",
|
"webpack-bundle-analyzer": "^4.5.0",
|
||||||
"webpack-cli": "^4.9.2"
|
"webpack-cli": "^4.9.2"
|
||||||
},
|
},
|
||||||
|
|||||||
+25
-10
@@ -9,7 +9,7 @@ class APIHelper
|
|||||||
//static only
|
//static only
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function launch(string $rootPath)
|
public static function launch(string $rootPath, ?string $actionPath = null)
|
||||||
{
|
{
|
||||||
//TODO: path를 php://input에서 받는게 아니라 api.php?~~~~~ 로 받아오는것이 etag 캐시 측면에서 훨씬 나을 듯!
|
//TODO: path를 php://input에서 받는게 아니라 api.php?~~~~~ 로 받아오는것이 etag 캐시 측면에서 훨씬 나을 듯!
|
||||||
try {
|
try {
|
||||||
@@ -19,20 +19,35 @@ class APIHelper
|
|||||||
Json::dieWithReason($e->getMessage());
|
Json::dieWithReason($e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$input){
|
if($actionPath !== null){
|
||||||
Json::dieWithReason("input이 비어있습니다. {$rawInput}");
|
if ($input && !is_array($input)) {
|
||||||
|
Json::dieWithReason('args가 array가 아닙니다.' . gettype($input));
|
||||||
|
}
|
||||||
|
if(!$input){
|
||||||
|
$input = [];
|
||||||
|
}
|
||||||
|
$actionArgs = $input;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(!$input){
|
||||||
|
Json::dieWithReason("input이 비어있습니다. {$rawInput}");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!key_exists('path', $input)) {
|
||||||
|
Json::dieWithReason('path가 지정되지 않았습니다.');
|
||||||
|
}
|
||||||
|
$actionPath = $input['path'];
|
||||||
|
|
||||||
|
if (key_exists('args', $input) && !is_array($input['args'])) {
|
||||||
|
Json::dieWithReason('args가 array가 아닙니다.' . gettype($input['args']));
|
||||||
|
}
|
||||||
|
$actionArgs = $input['args'] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!key_exists('path', $input)) {
|
|
||||||
Json::dieWithReason('path가 지정되지 않았습니다.');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key_exists('args', $input) && !is_array($input['args'])) {
|
|
||||||
Json::dieWithReason('args가 array가 아닙니다.' . gettype($input['args']));
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$obj = buildAPIExecutorClass($input['path'], $rootPath, $input['args'] ?? []);
|
$obj = buildAPIExecutorClass($actionPath, $rootPath, $actionArgs);
|
||||||
$validateResult = $obj->validateArgs();
|
$validateResult = $obj->validateArgs();
|
||||||
if ($validateResult !== null) {
|
if ($validateResult !== null) {
|
||||||
Json::dieWithReason($validateResult);
|
Json::dieWithReason($validateResult);
|
||||||
|
|||||||
@@ -0,0 +1,225 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
//NOTE: JavaScript 버전과 일치
|
||||||
|
const MAX_RNG_SUPPORT_BIT = 53;
|
||||||
|
if (PHP_INT_SIZE * 8 < MAX_RNG_SUPPORT_BIT) {
|
||||||
|
throw new \RangeException("PHP not support {$MAX_RNG_SUPPORT_BIT} bit integer");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reseed를 하지 않는 단순한 형태의 sha512 drbg
|
||||||
|
* float: bit를 강제로 채움
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
class LiteHashDRBG implements RNG
|
||||||
|
{
|
||||||
|
const MAX_INT = (1 << MAX_RNG_SUPPORT_BIT) - 1;
|
||||||
|
const BUFFER_BYTE_SIZE = 512 / 8; //SHA512
|
||||||
|
|
||||||
|
protected string $buffer;
|
||||||
|
protected int $bufferIdx;
|
||||||
|
public function __construct(protected string $seed, protected int $stateIdx = 0, int $bufferIdx = 0)
|
||||||
|
{
|
||||||
|
if($bufferIdx < 0){
|
||||||
|
throw new \InvalidArgumentException("bufferIdx {$bufferIdx} < 0");
|
||||||
|
}
|
||||||
|
if($bufferIdx >= self::BUFFER_BYTE_SIZE){
|
||||||
|
throw new \InvalidArgumentException("bufferIdx {$bufferIdx} >= ".self::BUFFER_BYTE_SIZE);
|
||||||
|
}
|
||||||
|
if($stateIdx < 0){
|
||||||
|
throw new \InvalidArgumentException("stateIdx {$stateIdx} < 0");
|
||||||
|
}
|
||||||
|
$this->genNextBlock();
|
||||||
|
$this->bufferIdx = $bufferIdx;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function genNextBlock(): void
|
||||||
|
{
|
||||||
|
$hq = $this->seed . pack('V', $this->stateIdx);
|
||||||
|
$this->buffer = hash('sha512', $hq, true);
|
||||||
|
$this->bufferIdx = 0;
|
||||||
|
$this->stateIdx += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static function getMaxInt(): int
|
||||||
|
{
|
||||||
|
return self::MAX_INT;
|
||||||
|
}
|
||||||
|
|
||||||
|
const INT_BIT_MASK_MAP = [
|
||||||
|
0x1 => 1,
|
||||||
|
0x3 => 2,
|
||||||
|
0x7 => 3,
|
||||||
|
0xf => 4,
|
||||||
|
0x1f => 5,
|
||||||
|
0x3f => 6,
|
||||||
|
0x7f => 7,
|
||||||
|
0xff => 8,
|
||||||
|
0x1ff => 9,
|
||||||
|
0x3ff => 10,
|
||||||
|
0x7ff => 11,
|
||||||
|
0xfff => 12,
|
||||||
|
0x1fff => 13,
|
||||||
|
0x3fff => 14,
|
||||||
|
0x7fff => 15,
|
||||||
|
0xffff => 16,
|
||||||
|
0x1ffff => 17,
|
||||||
|
0x3ffff => 18,
|
||||||
|
0x7ffff => 19,
|
||||||
|
0xfffff => 20,
|
||||||
|
0x1fffff => 21,
|
||||||
|
0x3fffff => 22,
|
||||||
|
0x7fffff => 23,
|
||||||
|
0xffffff => 24,
|
||||||
|
0x1ffffff => 25,
|
||||||
|
0x3ffffff => 26,
|
||||||
|
0x7ffffff => 27,
|
||||||
|
0xfffffff => 28,
|
||||||
|
0x1fffffff => 29,
|
||||||
|
0x3fffffff => 30,
|
||||||
|
0x7fffffff => 31,
|
||||||
|
0xffffffff => 32,
|
||||||
|
0x1ffffffff => 33,
|
||||||
|
0x3ffffffff => 34,
|
||||||
|
0x7ffffffff => 35,
|
||||||
|
0xfffffffff => 36,
|
||||||
|
0x1fffffffff => 37,
|
||||||
|
0x3fffffffff => 38,
|
||||||
|
0x7fffffffff => 39,
|
||||||
|
0xffffffffff => 40,
|
||||||
|
0x1ffffffffff => 41,
|
||||||
|
0x3ffffffffff => 42,
|
||||||
|
0x7ffffffffff => 43,
|
||||||
|
0xfffffffffff => 44,
|
||||||
|
0x1fffffffffff => 45,
|
||||||
|
0x3fffffffffff => 46,
|
||||||
|
0x7fffffffffff => 47,
|
||||||
|
0xffffffffffff => 48,
|
||||||
|
0x1ffffffffffff => 49,
|
||||||
|
0x3ffffffffffff => 50,
|
||||||
|
0x7ffffffffffff => 51,
|
||||||
|
0xfffffffffffff => 52,
|
||||||
|
0x1fffffffffffff => 53,
|
||||||
|
];
|
||||||
|
|
||||||
|
private static function calcBitMask($n)
|
||||||
|
{
|
||||||
|
$n |= $n >> 1;
|
||||||
|
$n |= $n >> 2;
|
||||||
|
$n |= $n >> 4;
|
||||||
|
$n |= $n >> 8;
|
||||||
|
$n |= $n >> 16;
|
||||||
|
$n |= $n >> 32;
|
||||||
|
|
||||||
|
return $n;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function nextBytes(int $bytes): string
|
||||||
|
{
|
||||||
|
if ($bytes <= 0) {
|
||||||
|
throw new \InvalidArgumentException("{$bytes} <= 0");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->bufferIdx + $bytes <= self::BUFFER_BYTE_SIZE) {
|
||||||
|
$buffer = substr($this->buffer, $this->bufferIdx, $bytes);
|
||||||
|
$this->bufferIdx += $bytes;
|
||||||
|
if ($this->bufferIdx == self::BUFFER_BYTE_SIZE) {
|
||||||
|
$this->genNextBlock();
|
||||||
|
}
|
||||||
|
return $buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$result = [substr($this->buffer, $this->bufferIdx)];
|
||||||
|
$remain = $bytes - (self::BUFFER_BYTE_SIZE - $this->bufferIdx);
|
||||||
|
|
||||||
|
while ($remain > self::BUFFER_BYTE_SIZE) {
|
||||||
|
$this->genNextBlock();
|
||||||
|
$result[] = $this->buffer;
|
||||||
|
$remain -= self::BUFFER_BYTE_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->genNextBlock();
|
||||||
|
if ($remain == 0) {
|
||||||
|
return join("", $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result[] = substr($this->buffer, 0, $remain);
|
||||||
|
$this->bufferIdx = $remain;
|
||||||
|
return join("", $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function nextBits(int $bits): string
|
||||||
|
{
|
||||||
|
$bytes = ($bits + 7) >> 3;
|
||||||
|
$headBits = $bits & 0x7;
|
||||||
|
|
||||||
|
$buffer = $this->nextBytes($bytes);
|
||||||
|
if ($headBits === 0) {
|
||||||
|
return $buffer;
|
||||||
|
}
|
||||||
|
$buffer[$bytes - 1] = chr(ord($buffer[$bytes - 1]) & (0xff >> (8 - $headBits)));
|
||||||
|
return $buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static private function parseU64(string $value): int
|
||||||
|
{
|
||||||
|
return unpack('P', $value)[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
private function _nextInt(int $bits): int
|
||||||
|
{
|
||||||
|
$buffer = $this->nextBits($bits) . "\x00\x00\x00\x00\x00\x00\x00";
|
||||||
|
|
||||||
|
return self::parseU64($buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function nextInt(?int $max = null): int
|
||||||
|
{
|
||||||
|
if ($max === null || $max === self::MAX_INT) {
|
||||||
|
$buffer = $this->nextBits(MAX_RNG_SUPPORT_BIT) . "\x00";
|
||||||
|
return self::parseU64($buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($max > self::MAX_INT) {
|
||||||
|
throw new \InvalidArgumentException('Over Max Int');
|
||||||
|
} else if ($max === 0) {
|
||||||
|
return 0;
|
||||||
|
} else if ($max < 0) {
|
||||||
|
return -$this->nextInt(-$max);
|
||||||
|
}
|
||||||
|
|
||||||
|
$mask = self::calcBitMask($max);
|
||||||
|
$bits = self::INT_BIT_MASK_MAP[$mask];
|
||||||
|
|
||||||
|
$n = $this->_nextInt($bits);
|
||||||
|
while ($n > $max) {
|
||||||
|
$n = $this->_nextInt($bits);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $n;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function nextFloat1(): float
|
||||||
|
{
|
||||||
|
$max = 1 << MAX_RNG_SUPPORT_BIT;
|
||||||
|
while (true) {
|
||||||
|
$buffer = $this->nextBits(MAX_RNG_SUPPORT_BIT + 1) . "\x00";
|
||||||
|
$nInt = self::parseU64($buffer);
|
||||||
|
if ($nInt <= $max) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $nInt / $max;
|
||||||
|
}
|
||||||
|
|
||||||
|
static function build(string $seed, int $idx = 0): self
|
||||||
|
{
|
||||||
|
return new LiteHashDRBG($seed, $idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
interface RNG
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int nextInt()가 반환 가능한 최대값
|
||||||
|
*/
|
||||||
|
public static function getMaxInt(): int;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param int $bytes
|
||||||
|
* @return string Little Endian 형태로 채워진 binary 값
|
||||||
|
*/
|
||||||
|
public function nextBytes(int $bytes): string;
|
||||||
|
public function nextBits(int $bits): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ?int $max 최대치(해당 값 포함)
|
||||||
|
* @return int 0과 최대치 사이의 임의의 정수
|
||||||
|
*/
|
||||||
|
public function nextInt(?int $max = null): int;
|
||||||
|
|
||||||
|
public function nextFloat1(): float;
|
||||||
|
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user