Enabled adding a context to render, so that dynamic fields can resolve locally (like in a message). Improved dynamic fields identification and resolution. Use of more consts for standard frames. Fix history recording and backtracking.

This commit is contained in:
Deon George 2022-05-01 17:42:19 +10:00
parent 0214416c4e
commit 2dc348a29c
12 changed files with 202 additions and 79 deletions

View File

@ -117,3 +117,5 @@ if (vtx.content && ans.content)
if (errors) if (errors)
exit(1); exit(1);
else
writeln('= OK');

View File

@ -59,6 +59,10 @@ const FRAME_TYPE_EXTERNAL ='x';
const FRAME_TYPE_RESPONSE ='r'; const FRAME_TYPE_RESPONSE ='r';
/* Login frame, enables the user to authenticate to the system, or to a CUG */ /* Login frame, enables the user to authenticate to the system, or to a CUG */
const FRAME_TYPE_LOGIN ='l'; const FRAME_TYPE_LOGIN ='l';
/* Mail template frames - mail templates will have the user's stats for the area passed to render() */
const FRAME_TYPE_MAIL_TEMPLATE ='m';
/* Frame is a message */
const FRAME_TYPE_MESSAGE ='M';
/* Disable *# going backwards for the following frames */ /* Disable *# going backwards for the following frames */
var NO_HISTORY_FRAMES =['980a','98b','981a','982a','983a','998a']; var NO_HISTORY_FRAMES =['980a','98b','981a','982a','983a','998a'];
@ -74,6 +78,7 @@ const INACTIVE_LOGIN =5*60000;
var SYSTEM_ZONE =516; var SYSTEM_ZONE =516;
// @todo rename these all to FRAME_*
/* Home Frame */ /* Home Frame */
const HOME_FRAME ={frame: 1,index: 'a'}; const HOME_FRAME ={frame: 1,index: 'a'};
/* Login Frame */ /* Login Frame */
@ -88,8 +93,18 @@ const LOGIN_FAILED_FRAME ={frame: 983,index: 'a'};
const HOME_FRAME_AUTH ={frame: 98,index: 'b'}; const HOME_FRAME_AUTH ={frame: 98,index: 'b'};
/* Home page for initial connection */ /* Home page for initial connection */
const HOME_FRAME_CONNECT ={frame: 980,index: 'a'}; const HOME_FRAME_CONNECT ={frame: 980,index: 'a'};
const FRAME_SYSTEM_ERROR ={frame: 998,index: 'a'};
/* Attributes saved/loaded from files */ /* Attributes saved/loaded from files */
const SAVED_FRAME_ATTRS =['version','frame','frame_fields','index','owner','cost','content','isPublic','isAccessible','type','key']; const SAVED_FRAME_ATTRS =['version','frame','frame_fields','index','owner','cost','content','isPublic','isAccessible','type','key'];
/* The page that has our echomail area reading template */
var MAIL_TEMPLATE_FRAME ='199a';
/* The page that has our echomail area summary template */
var MAIL_TEMPLATE_AREA_SUMMARY ='198a';
// The maximum size of embedded dynamic fields in frames
var DYNAMIC_FIELD_SIZE_MAX =50;
this; this;

View File

@ -75,7 +75,7 @@ function FrameAnsi() {
} }
// Render the frame to the user // Render the frame to the user
this.render=function(withoutHeader) { this.render=function(context,withoutHeader) {
log(LOG_DEBUG,'- ANSI FRAME'); log(LOG_DEBUG,'- ANSI FRAME');
owner = base64_decode(this.owner); owner = base64_decode(this.owner);
@ -99,7 +99,7 @@ function FrameAnsi() {
contentgraphic = new Graphic(this.settings.FRAME_WIDTH); contentgraphic = new Graphic(this.settings.FRAME_WIDTH);
contentgraphic.auto_extend = true; contentgraphic.auto_extend = true;
contentgraphic.atcodes = false; contentgraphic.atcodes = false;
contentgraphic.ANSI = this.parse(base64_decode(this.content)); contentgraphic.ANSI = this.parse(base64_decode(this.content),context);
var contentframe = new Frame(1,2,this.settings.FRAME_WIDTH,this.settings.FRAME_LENGTH,LIGHTGRAY,frame); var contentframe = new Frame(1,2,this.settings.FRAME_WIDTH,this.settings.FRAME_LENGTH,LIGHTGRAY,frame);
contentframe.open(); contentframe.open();

View File

@ -1,5 +1,3 @@
var MAIL_TEMPLATE_FRAME = '199a';
// Our frame object // Our frame object
function PageFrame() { function PageFrame() {
'use strict'; 'use strict';
@ -171,8 +169,7 @@ PageFrame.prototype.load = function(filename) {
log(LOG_ERROR,'Frame error: '+error); log(LOG_ERROR,'Frame error: '+error);
// Load our system error frame. // Load our system error frame.
// @todo this should be a config item this.load(pageStr(FRAME_SYSTEM_ERROR));
this.load('998a');
return null; return null;
} }
@ -190,11 +187,13 @@ PageFrame.prototype.loadMessage = function(page) {
this.owner = 1; this.owner = 1;
this.isPublic = true; this.isPublic = true;
this.isAccessible = true; this.isAccessible = true;
this.key = [0,null,null,null,null,null,null,null,null,918]; // @todo Keys should map to next/previous/send, etc as indicated in the template frame.
this.key = [this.frame.substr(0,7)+'1',null,null,null,null,null,null,null,null,null];
this.type = FRAME_TYPE_MESSAGE;
// Load our message // Load our message
var ma = new MsgAreas() var ma = new MsgAreas()
var msg = ma.getMessage(page); var msg = ma.getMessage(this.frame);
var msg_header; var msg_header;
if (! msg) if (! msg)
@ -215,6 +214,7 @@ PageFrame.prototype.loadMessage = function(page) {
msg_header += 'SUBJECT: '+msg.subject.substr(0,72)+"\n\r"; msg_header += 'SUBJECT: '+msg.subject.substr(0,72)+"\n\r";
} else { } else {
// @todo change this to use atcode()
msg_header = base64_decode(to.content).replace(/@(.*)@/g, msg_header = base64_decode(to.content).replace(/@(.*)@/g,
function (str, code, offset, s) { function (str, code, offset, s) {
var length = code.split(':')[1]; var length = code.split(':')[1];
@ -228,7 +228,7 @@ PageFrame.prototype.loadMessage = function(page) {
); );
} }
log(LOG_DEBUG,'Loaded message: '+msg_header+msg.content); //log(LOG_DEBUG,'Loaded message: '+msg_header+msg.content);
this.content = base64_encode(msg_header+msg.content); this.content = base64_encode(msg_header+msg.content);
log(LOG_DEBUG,'Loaded frame: ['+this.frame+']['+this.index+'] ('+this.page+')'); log(LOG_DEBUG,'Loaded frame: ['+this.frame+']['+this.index+'] ('+this.page+')');
@ -247,8 +247,16 @@ PageFrame.prototype.loadMessage = function(page) {
* should apply for that field. * should apply for that field.
* *
* @param text * @param text
* @param context
*/ */
PageFrame.prototype.parse = function(text) { PageFrame.prototype.parse = function(text,context) {
log(LOG_DEBUG,'Parsing Frame ...');
if (this.type === FRAME_TYPE_MESSAGE) {
log(LOG_DEBUG,'- Not parsing message frame');
return text;
}
/** Column /** Column
* @type {number} * @type {number}
*/ */
@ -394,13 +402,16 @@ PageFrame.prototype.parse = function(text) {
break; break;
// X - dynamic fields, terminated with ESC // X - dynamic fields, terminated with ESC
// Dynamic fields are defined with ESC X FIELD;LENGTH;PAD ESC \
// @note FIELD & LENGTH are required
// @note Dynamic field is can only be DYNAMIC_FIELD_SIZE_MAX chars in size
case 'X': case 'X':
//log(LOG_DEBUG,'PU ['+r+'x'+c+'] '+advance); //log(LOG_DEBUG,'DF ['+r+'x'+c+'] '+advance);
advance++; advance++;
// Find our end ST param in the next 50 chars // Find our end ST param in the next DYNAMIC_FIELD_SIZE_MAX chars
matches = text.substr(p+advance,50).match(/(([a-z]+;[0-9]+)([;]?.+)?)\x1b\\/); matches = text.substr(p+advance,DYNAMIC_FIELD_SIZE_MAX).match(/(([a-zA-Z._^;]+[0-9]?;-?[0-9^;]+)([;]?[^;]+)?)\x1b\\/);
//log(LOG_DEBUG,'PU ['+r+'x'+c+'] ADVANCE: '+advance+', MATCHES: '+JSON.stringify(matches)+', LENGTH: '+(matches ? matches[0].length : 0)+', STRING: '+text.substr(p+advance,50)); //log(LOG_DEBUG,'- DF ['+r+'x'+c+'] ADVANCE: '+advance+', MATCHES: '+JSON.stringify(matches)+', LENGTH: '+(matches ? matches[0].length : 0)+', STRING: '+text.substr(p+advance,50));
if (! matches) { if (! matches) {
chars += nextbyte; chars += nextbyte;
@ -410,14 +421,13 @@ PageFrame.prototype.parse = function(text) {
advance += matches[0].length-1; advance += matches[0].length-1;
var pu = matches[0].substr(0,matches[0].length-2).split(';'); var df = matches[0].substr(0,matches[0].length-2).split(';');
//log(LOG_DEBUG,'PU ['+r+'x'+c+'] ADVANCE: '+advance+', PU: '+pu); //log(LOG_DEBUG,'- DF ['+r+'x'+c+'] ADVANCE: '+advance+', DF: '+df);
chars = renderfield(pu[0],pu[1]); log(LOG_DEBUG,'- DF found at ['+r+'x'+(c-1)+'], Field: '+df[0]+', Length: '+df[1]+', Attrs: '+JSON.stringify({i:i,f:f,b:b}));
chars = atcode(df[0],df[1],df[2],context);
byte = ''; byte = '';
log(LOG_DEBUG,'PU Field found at ['+r+'x'+(c-1)+'], Field: '+pu[0]+', Length: '+pu[1]+', Attrs: '+JSON.stringify({i:i,f:f,b:b}));
break; break;
// _ - has our fields that take input // _ - has our fields that take input
@ -528,12 +538,5 @@ PageFrame.prototype.parse = function(text) {
*/ */
} }
// Convert any atcodes
output = output.replace(/@(.*)@/g,
function (str, code, offset, s) {
return bbs.atcode(code);
}
);
return output; return output;
}; };

View File

@ -104,6 +104,58 @@ function ans2bin(ansi,frame) {
} }
} }
// Dynamic Field Processing
// @note bbs.atcodes() cannot process modifiers, so this function is a replacement.
function atcode(field,length,pad,context) {
'use strict';
length = length ? length : field.length;
pad = pad ? pad : ' ';
var result = '';
switch(field) {
// Get the ECHOAREA FTN AREA_TAG
case 'areatag':
if (typeof context !== 'object') {
log(LOG_ERROR,'Unable to render ['+field+'], no context provided');
break;
}
result = context.msgbase.cfg.area_tag;
break;
// Get the ECHOAREA Description
case 'areadesc':
if (typeof context !== 'object') {
log(LOG_ERROR,'Unable to render ['+field+'], no context provided');
break;
}
result = context.msgbase.cfg.description;
break;
case 'nodeid':
result = getNodeID();
break;
default:
result = bbs.atcode(field);
if (result === null)
result = '';
}
log(LOG_DEBUG,' - result length ['+result.length+'] desired ('+length+')');
if (result.length < Math.abs(length))
result = (length < 0) ? padright(result,Math.abs(length),pad) : padleft(result,length,pad);
else if (result.length > Math.abs(length))
result = result.substr(0,Math.abs(length));
log(LOG_DEBUG,'- ATCODE ['+field+'] ('+length+'|"'+pad+'") returns ['+result+']');
return result;
}
/** /**
* Find a message base by code * Find a message base by code
* *
@ -164,7 +216,7 @@ function getNodeID() {
} }
} }
return pad(matches[0],3)+pad(matches[1],3)+pad(bbs.node_num,2); return padleft(matches[0],3,'0')+padleft(matches[1],3,'0')+padleft(bbs.node_num,2,'0');
} }
function getPageOwners() { function getPageOwners() {
@ -228,11 +280,18 @@ function msgBaseImport(msgbase,page,text) {
return msgbase.save_msg(hdr, body); return msgbase.save_msg(hdr, body);
} }
// Pad a number with zeros // Right Pad a string with char c
function pad(n, width, z) { function padright(n,width,c) {
z = z || '0'; c = c || '0';
n = n + ''; n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n; return n.length >= width ? n : new Array(width - n.length + 1).join(c) + n;
}
// Left Pad a string with char c
function padleft(n,width,c) {
c = c || '0';
n = n + '';
return n.length >= width ? n : n+new Array(width - n.length + 1).join(c);
} }
/** /**
@ -314,20 +373,6 @@ function pageEditor(page) {
return pageditor; return pageditor;
} }
function renderfield(field,length) {
switch (field) {
case 'nodeid':
result = getNodeID();
}
if (result.length < length)
result += ' '.repeat(length-result.length);
else if (result.length > length)
result = result.substr(0,length);
return result;
}
/** /**
* This function returns a list of zones used by this system. * This function returns a list of zones used by this system.
*/ */

View File

@ -230,17 +230,30 @@ MsgArea.prototype.tag_msgs = function() {
return true; return true;
} }
MsgAreas.prototype.getMessage = function(page) { MsgAreas.prototype.getArea = function(area) {
if (page === undefined) log(LOG_DEBUG,'- AREA:'+JSON.stringify(area));
if (area === undefined)
return undefined; return undefined;
var zone = page.substr(0,4); var zone = (''+area).substr(1,4);
var echo = page.substr(4,2); var echo = (''+area).substr(5,2);
var page = page.substr(6); log(LOG_DEBUG,' - zone:'+JSON.stringify(zone));
log(LOG_DEBUG,' - echo:'+JSON.stringify(echo));
area = this.areas.filter(function(x) { return this.areas.filter(function(x) {
return x.zone_id === zone && x.area_id === echo; return x.zone_id === zone && x.area_id === echo;
})[0] })[0]
}
return area ? area.getMessage(page) : undefined;
MsgAreas.prototype.getMessage = function(page) {
var area = this.getArea(page);
log(LOG_DEBUG,' - msg:'+JSON.stringify(page.substr(7,4)));
return area ? area.getMessage(page.substr(7,4)) : undefined;
}
MsgAreas.prototype.getUserStats = function(page) {
var area = this.getArea(page);
return area ? msg_area.grp_list[area.msgbase.cfg.grp_number].sub_list[msg_area.sub[area.msgbase.cfg.code].index] : undefined;
} }

87
main.js
View File

@ -880,7 +880,8 @@ while(bbs.online) {
// GO Backwards // GO Backwards
case ACTION_BACKUP: case ACTION_BACKUP:
// Do we have anywhere to go, drop the current page from the history. log(LOG_DEBUG,'- ACTION_BACKUP: history size - '+history.length+' with ['+history.join('|')+']');
// Do we have anywhere to go, drop the current page from the history
if (history.length > 1) if (history.length > 1)
history.pop(); history.pop();
@ -888,7 +889,7 @@ while(bbs.online) {
next_page = (history.length > 0) ? history[history.length-1] : null; next_page = (history.length > 0) ? history[history.length-1] : null;
log(LOG_DEBUG,'- ACTION_BACKUP: Backing up to ['+(next_page ? pageStr(next_page) : '')+'] current ['+fo.page+']'); log(LOG_DEBUG,'- ACTION_BACKUP: Backing up to ['+JSON.stringify(next_page)+'] current ['+fo.page+']');
// If there is no next page, we'll ignore the request. // If there is no next page, we'll ignore the request.
if (! next_page || (pageStr(next_page) === fo.page)) { if (! next_page || (pageStr(next_page) === fo.page)) {
@ -902,22 +903,55 @@ while(bbs.online) {
var current = null; var current = null;
// For logged in users, we'll see if this is a mail page. // For logged in users, we'll see if this is a mail page.
// @todo consider how we do mail security. if (user.number) {
// 1zzzzEEnnnn // @todo consider how we do mail security.
if (user.number && /^1[0-9]{10}/.test(next_page.frame)) {
log(LOG_DEBUG,'- ACTION_GOTO - load message: ['+next_page.frame+']');
require('ansitex/load/control-echomail.js','CONTROL_ECHOMAIL'); // Echoarea mail summary
control.push(new echomail((''+next_page.frame).substr(1))); if (/^1[0-9]{6}1$/.test(next_page.frame)) {
action = false; log(LOG_DEBUG,'- ACTION_GOTO - load echoarea summary: ['+next_page.frame+']');
log(LOG_DEBUG,'- ACTION_GOTO - control message: ['+JSON.stringify(control[control.length-1])+'] ('+control.length+')');
if (! control[control.length-1].ready()) { to = viewdata ? new FrameViewdata() : new FrameAnsi();
control.pop(); // @todo look for a template in the area or group first
fo.sendBaseline('ERR_ROUTE',false); to.load(MAIL_TEMPLATE_AREA_SUMMARY);
mode = action = false;
// If the template page doesnt exist
if (! to.content) {
fo.sendBaseline('ERR_ROUTE',false);
mode = action = false;
break;
}
current = fo;
var ma = new MsgAreas();
fo = viewdata ? new FrameViewdata() : new FrameAnsi();
fo.frame = next_page.frame;
fo.index = next_page.index;
fo.content = to.content;
fo.isPublic = true;
fo.isAccessible = to.isAccessible;
fo.owner = to.owner;
fo.type = to.type;
log(LOG_DEBUG,'USER:'+JSON.stringify(ma.getUserStats((''+next_page.frame).substr(1,6)),null,"\r"));
next_page = null;
// 1zzzzEEnnnn - get a message
} else if (/^1[0-9]{10}/.test(next_page.frame)) {
log(LOG_DEBUG,'- ACTION_GOTO - load message: ['+next_page.frame+']');
require('ansitex/load/control-echomail.js','CONTROL_ECHOMAIL');
control.push(new echomail((''+next_page.frame).substr(1)));
action = false;
log(LOG_DEBUG,'- ACTION_GOTO - control message: ['+JSON.stringify(control[control.length-1])+'] ('+control.length+')');
if (! control[control.length-1].ready()) {
control.pop();
fo.sendBaseline('ERR_ROUTE',false);
mode = action = false;
}
next_page = null;
} }
break;
} }
if (next_page !== null) { if (next_page !== null) {
@ -937,6 +971,8 @@ while(bbs.online) {
mode = action = false; mode = action = false;
break; break;
} }
next_page = null;
} }
// If the user has access to the frame // If the user has access to the frame
@ -959,16 +995,14 @@ while(bbs.online) {
log(LOG_DEBUG,'- ACTION_GOTO: next_page ['+JSON.stringify(next_page)+'] last history ['+JSON.stringify(history[history.length-1])+']'); log(LOG_DEBUG,'- ACTION_GOTO: next_page ['+JSON.stringify(next_page)+'] last history ['+JSON.stringify(history[history.length-1])+']');
// Record our history // Record our history
if (next_page && (! history.length || (pageStr(history[history.length-1]) !== pageStr(next_page))) && (fo.type !== FRAME_TYPE_LOGIN)) { if ((! history.length || (pageStr(history[history.length-1]) !== fo.page)) && (fo.type !== FRAME_TYPE_LOGIN)) {
// Ignore the login frames // Ignore the login frames
if (NO_HISTORY_FRAMES.indexOf(pageStr(next_page)) === -1) { if (NO_HISTORY_FRAMES.indexOf(fo.page) === -1) {
history.push(next_page); history.push({frame:fo.frame,index:fo.index});
log(LOG_DEBUG,'- ACTION_GOTO: Added to history ['+(next_page ? pageStr(next_page) : '')+'] now ['+history.length+']'); log(LOG_DEBUG,'- ACTION_GOTO: Added to history ['+fo.page+'] now ['+history.length+']');
} }
} }
next_page = null;
// Load frame // Load frame
case ACTION_RELOAD: case ACTION_RELOAD:
log(LOG_DEBUG,'- ACTION_RELOAD: ['+(next_page ? pageStr(next_page) : '')+']'); log(LOG_DEBUG,'- ACTION_RELOAD: ['+(next_page ? pageStr(next_page) : '')+']');
@ -983,6 +1017,17 @@ while(bbs.online) {
bbs.node_action=NODE_MAIN; bbs.node_action=NODE_MAIN;
switch(fo.type) { switch(fo.type) {
// Terminate frame
case FRAME_TYPE_MAIL_TEMPLATE:
log(LOG_DEBUG,'- MAIL_TEMPLATE: ['+fo.frame+']');
//log(LOG_DEBUG,' - '+JSON.stringify(ma.getArea(fo.frame)));
fo.render(ma.getArea(fo.frame));
mode = false;
action = false;
ma = undefined;
break;
// Terminate frame // Terminate frame
case FRAME_TYPE_TERMINATE: case FRAME_TYPE_TERMINATE:
fo.render(); fo.render();

View File

@ -1 +1 @@
{"version":1,"frame":98,"index":"a","owner":9,"cost":0,"content":"G1swbRtbNzFDG1sxOzMybRtYbm9kZWlkOzgbXBtbMG0NChtbNTVDG1sxbUBEQVRFVElNRUAbWzBtDQobWzIyQxtbMW3aIL/Cv7Pav9q/2sK/wr8gwy3avxtbMG0NChtbMjJDs7Ozw9mzsyCzs7Mgs8PZILMgs7MNChtbMjJDG1sxOzMwbcDB2cHZwMDZwNnAINnB2SDA2cDZIPr6+htbMG0NChtbMjJDG1sxOzMwbcTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExBtbMG0NChtbMjNDG1sxOzMxbdzcxNwbWzM3bSAbWzMybdzcxNwbWzM3bSAbWzM0bdzcxNwbWzM3bSAbWzMzbdzcG1swbSAbWzMwOzQ3bSDc3CAgINzcxNwg3Nwg3CAbWzM3OzQwbQ0KG1syM0MbWzE7MzFt3NzEsRtbMzdtIBtbMzJtsrEbWzM3bSAbWzMybbEbWzM3bSAbWzM0bd/fxNwbWzM3bSAbWzMzbdzcG1swbSAbWzMwOzQ3bSCyscQgILKxxN8g39/C3yAbWzM3OzQwbQ0KG1syM0MbWzE7MzFtsbAbWzBtIBtbMTszMW2wG1swbSAbWzE7MzJtsbAbWzBtIBtbMTszMm2wG1swbSAbWzE7MzRtsbAbWzBtIBtbMTszNG2wG1swbSAbWzE7MzNtsbAbWzBtIBtbMzA7NDdtILGwILAgsbAgsCCxsCCwIBtbMzc7NDBtDQobWzIzQxtbMTszMW3f38TfG1swbSAbWzE7MzJt398bWzBtIBtbMTszMm3fG1swbSAbWzE7MzRt39/E3xtbMG0gG1sxOzMzbd/fG1swbSAbWzMwOzQ3bSDf38TfIN/fxN8g398g3yAbWzM3OzQwbQ0KG1syMkMbWzE7MzBtxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEG1swbQ0KG1s0QxtbMW0uICAgICAuICAgG1szMG2zG1swbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTszMG2zG1swbQ0KG1syQxtbMW3av7/Cv9q/IL/avxtbMG0gG1sxOzMwbbMbWzBtIBtbMTszMW1VU0VSOhtbMG0gG1sxbRtfVVNFUjsyNXQ7+RtcG1swbSAgICAgICAgICAgICAgICAbWzE7MzBtsxtbMG0NChtbMkPAv7Ozs7OzILOzsyAbWzE7MzBtsxtbMG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAbWzE7MzBtsxtbMG0NChtbMkMbWzE7MzBtwNnZwbTZ2RtbMzdtIBtbMzBt2dnZG1szN20gG1szMG2zG1swbSAbWzE7MzFtUEFTUzobWzBtIBtbMW0bX1BBU1M7NDBwO/kbXBtbMG0gG1sxOzMwbbMbWzBtDQobWzVDG1sxOzMwbcTZG1swbSAgICAgICAbWzE7MzBtsxtbMG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAbWzE7MzBtsxtbMG0NCg0KDQoNCg0KG1sxM0MbWzE7MzBtVG8gcmVnaXN0ZXIgYW4gYWNjb3VudCBlbnRlchtbMG0gG1sxbU5FVxtbMG0gG1sxOzMwbWZvciB0aGUgdXNlciBuYW1lG1swbQ0KG1sxNkMbWzE7MzBtVXNlG1swbSAbWzE7MzJtKiobWzBtIBtbMTszMG10byBjbGVhciB5b3VyIGlucHV0G1swbSAbWzE7MzJtKjAwG1swbSAbWzE7MzBtdG8gc3RhcnQgYWdhaW4bWzBtDQo=","isPublic":1,"isAccessible":1,"type":"l","key":[null,"login",null,null,null,null,null,null,null,null],"date":"2020-07-08T05:17:35.174Z"} {"version":1,"frame":98,"index":"a","owner":9,"cost":0,"content":"G1swbRtbNzFDG1sxOzMybRtYbm9kZWlkOzgbXBtbMG0NChtbNTVDG1sxbRtYREFURVRJTUU7MjQbXBtbMG0NChtbMjJDG1sxbdogv8K/s9q/2r/awr/CvyDDLdq/G1swbQ0KG1syMkOzs7PD2bOzILOzsyCzw9kgsyCzsw0KG1syMkMbWzE7MzBtwMHZwdnAwNnA2cAg2cHZIMDZwNkg+vr6G1swbQ0KG1syMkMbWzE7MzBtxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEG1swbQ0KG1syM0MbWzE7MzFt3NzE3BtbMzdtIBtbMzJt3NzE3BtbMzdtIBtbMzRt3NzE3BtbMzdtIBtbMzNt3NwbWzBtIBtbMzA7NDdtINzcICAg3NzE3CDc3CDcIBtbMzc7NDBtDQobWzIzQxtbMTszMW3c3MSxG1szN20gG1szMm2ysRtbMzdtIBtbMzJtsRtbMzdtIBtbMzRt39/E3BtbMzdtIBtbMzNt3NwbWzBtIBtbMzA7NDdtILKxxCAgsrHE3yDf38LfIBtbMzc7NDBtDQobWzIzQxtbMTszMW2xsBtbMG0gG1sxOzMxbbAbWzBtIBtbMTszMm2xsBtbMG0gG1sxOzMybbAbWzBtIBtbMTszNG2xsBtbMG0gG1sxOzM0bbAbWzBtIBtbMTszM22xsBtbMG0gG1szMDs0N20gsbAgsCCxsCCwILGwILAgG1szNzs0MG0NChtbMjNDG1sxOzMxbd/fxN8bWzBtIBtbMTszMm3f3xtbMG0gG1sxOzMybd8bWzBtIBtbMTszNG3f38TfG1swbSAbWzE7MzNt398bWzBtIBtbMzA7NDdtIN/fxN8g39/E3yDf3yDfIBtbMzc7NDBtDQobWzIyQxtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtDQobWzRDG1sxbS4gICAgIC4gICAbWzMwbbMbWzBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzMwbbMbWzBtDQobWzJDG1sxbdq/v8K/2r8gv9q/G1swbSAbWzE7MzBtsxtbMG0gG1sxOzMxbVVTRVI6G1swbSAbWzFtG19VU0VSOzI1dDv5G1wbWzBtICAgICAgICAgICAgICAgIBtbMTszMG2zG1swbQ0KG1syQ8C/s7Ozs7Mgs7OzIBtbMTszMG2zG1swbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTszMG2zG1swbQ0KG1syQxtbMTszMG3A2dnBtNnZG1szN20gG1szMG3Z2dkbWzM3bSAbWzMwbbMbWzBtIBtbMTszMW1QQVNTOhtbMG0gG1sxbRtfUEFTUzs0MHA7+RtcG1swbSAbWzE7MzBtsxtbMG0NChtbNUMbWzE7MzBtxNkbWzBtICAgICAgIBtbMTszMG2zG1swbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTszMG2zG1swbQ0KDQoNCg0KDQobWzEzQxtbMTszMG1UbyByZWdpc3RlciBhbiBhY2NvdW50IGVudGVyG1swbSAbWzFtTkVXG1swbSAbWzE7MzBtZm9yIHRoZSB1c2VyIG5hbWUbWzBtDQobWzE2QxtbMTszMG1Vc2UbWzBtIBtbMTszMm0qKhtbMG0gG1sxOzMwbXRvIGNsZWFyIHlvdXIgaW5wdXQbWzBtIBtbMTszMm0qMDAbWzBtIBtbMTszMG10byBzdGFydCBhZ2FpbhtbMG0NCg==","isPublic":1,"isAccessible":1,"type":"l","key":[null,"login",null,null,null,null,null,null,null,null],"date":"2020-07-08T05:17:35.174Z"}

View File

@ -1 +1 @@
{"version":1,"frame":98,"index":"b","owner":9,"cost":0,"content":"G1swbRtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtDQogG1sxOzMxbdzcxNwbWzM3bSAbWzMybdzcxNwbWzM3bSAbWzM0bdzcxNwbWzM3bSAbWzMzbdzcG1swbSAbWzMwOzQ3bSDc3CAgINzcxNwg3Nwg3CAbWzM3OzQwbSAgIBtbMW3aIL/Cv7Pav9q/2sK/wr8bWzBtICAgICAgICAgICAbWzE7MzBtQERBVEVUSU1FfEwxNUAbWzBtDQogG1sxOzMxbdzcxLEbWzM3bSAbWzMybbKxG1szN20gG1szMm2xG1szN20gG1szNG3f38TcG1szN20gG1szM23c3BtbMG0gG1szMDs0N20gsrHEICCyscTfIN/fwt8gG1szNzs0MG0gICCzs7PD2bOzILOzsyCzw9kgICAgICAgICAgICAgICAgICAbWzE7MzBtQFRJTUV8TDhAG1swbQ0KIBtbMTszMW2xsBtbMG0gG1sxOzMxbbAbWzBtIBtbMTszMm2xsBtbMG0gG1sxOzMybbAbWzBtIBtbMTszNG2xsBtbMG0gG1sxOzM0bbAbWzBtIBtbMTszM22xsBtbMG0gG1szMDs0N20gsbAgsCCxsCCwILGwILAgG1szNzs0MG0gICAbWzE7MzBtwMHZwdnAwNnA2cAg2cHZG1swbQ0KIBtbMTszMW3f38TfG1swbSAbWzE7MzJt398bWzBtIBtbMTszMm3fG1swbSAbWzE7MzRt39/E3xtbMG0gG1sxOzMzbd/fG1swbSAbWzMwOzQ3bSDf38TfIN/fxN8g398g3yAbWzM3OzQwbQ0KG1sxOzMwbcTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExBtbMG0bWzI0QxtbMTszMDs0MW3fG1szNzs0MG0gG1szMDs0MW3fG1szNzs0MG0gG1szMDs0MW3fG1s0MG3fG1s0MW3fG1szNzs0MG0gG1szMDs0MW3fG1s0MG3fG1szMW3cG1szN20gG1szMDs0MW3fG1s0MG3f3xtbMzdtIBtbMzA7NDFt3xtbNDBt3xtbNDFt3xtbMG0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzVtIBtbMDsxOzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzQwbd8gIBtbNDFt3BtbNDBt39wbWzBtDQogV2VsY29tZSAbWzFtQE1FTU8yLUwyMEAbWzA7MzBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTszN23f398g3yDfIN/fICDf398g3yDfG1swbQ0KIFlvdSd2ZSByZWFjaGVkIBtbMTszMW1BG1szMm1OG1szNG1TG1szM21JG1swOzMwOzQ3bXRleBtbMzc7NDBtIG9uICAgICAgICAbWzE7MzA7NDFt3xtbNDBt398bWzM3bSAbWzMwOzQxbd8bWzQwbd8bWzQxbd8bWzM3OzQwbSAbWzMwOzQxbd8bWzQwbd8bWzQxbd8bWzM3OzQwbSAbWzMwOzQxbd8bWzQwbd/fG1szN20gG1szMG3f3xtbNDFt3xtbMzc7NDBtIBtbMzA7NDFt3xtbNDBt3xtbNDFt3xtbMzc7NDBtIBtbMzA7NDFt3xtbMzc7NDBtIBtbMzA7NDFt3xtbMzc7NDBtIBtbMzA7NDFt3xtbNDBt398bWzM3bSAbWzMwbd/fG1s0MW3fG1szNzs0MG0gG1szMG3fG1szN20gG1szMDs0MW3fG1s0MG3fG1s0MW3fG1szNzs0MG0gG1szMDs0MW3fG1s0MG3fG1s0MW3fG1swbQ0KIG5vZGUgG1sxbRtYbm9kZWlkOzgbXBtbMG0uICAgICAgICAgICAgICAgICAgIBtbMTszMTs0MW3cG1szNzs0MG0gICAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxbd/fG1s0MW3cG1szNzs0MG0gICAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzQwbd/cG1szN20gG1szMTs0MW3cG1szNzs0MG0gG1szMTs0MW3cG1szNzs0MG0gG1szMTs0MW3cG1swbSAgICAgG1sxOzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzQwbSAbWzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzBtDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxbd/f3yDf398g3yDfIN/f3yAgIN8g3yDfIN/f3yDf398gICDfIN8g39/fIN8g3xtbMG0NCiBUaGVyZSBhcmUgG1sxbUBPTi1aMkAbWzBtIG90aGVycyBvbmxpbmUgYXMgICAgG1sxOzMxbVBsZWFzZSBiZSBwYXRpZW50IHdoaWxlIHdlG1swbQ0KIHdlbGwgYW5kIBtbMW0wMBtbMG0gbmV3IHVzZXJzIHRvZGF5LiAgICAgICAgICAgICAgICAgICAgG1sxOzMxbWlubm92YXRlIGFuZCBpcm9uIG91dCB0aGUgYnVncxtbMG0NCg0KIFlvdSBoYXZlIBtbMW1AQllURVNMRUZUQBtbMG0gY3JlZGl0cyBsZWZ0DQogYW5kIBtbMW1ATUFJTFdAIBtbMG1tZXNzYWdlcyBpbiB5b3VyIG1haWxib3guDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAbWzFtUHJlc3MbWzBtIBtbMTs1OzMybTAbWzA7MTszM20gG1szN21NYWluIE1lbnUbWzBtDQoNCg==","isPublic":0,"isAccessible":1,"type":"i","key":[1,null,null,null,null,null,null,null,null,null],"date":"2020-07-08T01:30:48.608Z"} {"version":1,"frame":98,"index":"b","owner":9,"cost":0,"content":"G1swbRtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtDQogG1sxOzMxbdzcxNwbWzM3bSAbWzMybdzcxNwbWzM3bSAbWzM0bdzcxNwbWzM3bSAbWzMzbdzcG1swbSAbWzMwOzQ3bSDc3CAgINzcxNwg3Nwg3CAbWzM3OzQwbSAgIBtbMW3aIL/Cv7Pav9q/2sK/wr8bWzBtICAgICAgICAgICAbWzE7MzBtG1hEQVRFVElNRTsxNRtcG1swbQ0KIBtbMTszMW3c3MSxG1szN20gG1szMm2ysRtbMzdtIBtbMzJtsRtbMzdtIBtbMzRt39/E3BtbMzdtIBtbMzNt3NwbWzBtIBtbMzA7NDdtILKxxCAgsrHE3yDf38LfIBtbMzc7NDBtICAgs7Ozw9mzsyCzs7Mgs8PZICAgICAgICAgICAgICAgICAgG1sxOzMwbRtYVElNRTs4G1wbWzBtDQogG1sxOzMxbbGwG1swbSAbWzE7MzFtsBtbMG0gG1sxOzMybbGwG1swbSAbWzE7MzJtsBtbMG0gG1sxOzM0bbGwG1swbSAbWzE7MzRtsBtbMG0gG1sxOzMzbbGwG1swbSAbWzMwOzQ3bSCxsCCwILGwILAgsbAgsCAbWzM3OzQwbSAgIBtbMTszMG3AwdnB2cDA2cDZwCDZwdkbWzBtDQogG1sxOzMxbd/fxN8bWzBtIBtbMTszMm3f3xtbMG0gG1sxOzMybd8bWzBtIBtbMTszNG3f38TfG1swbSAbWzE7MzNt398bWzBtIBtbMzA7NDdtIN/fxN8g39/E3yDf3yDfIBtbMzc7NDBtDQobWzE7MzBtxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEG1swbRtbMjRDG1sxOzMwOzQxbd8bWzM3OzQwbSAbWzMwOzQxbd8bWzM3OzQwbSAbWzMwOzQxbd8bWzQwbd8bWzQxbd8bWzM3OzQwbSAbWzMwOzQxbd8bWzQwbd8bWzMxbdwbWzM3bSAbWzMwOzQxbd8bWzQwbd/fG1szN20gG1szMDs0MW3fG1s0MG3fG1s0MW3fG1swbQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAbWzE7NW0gG1swOzE7MzE7NDFt3BtbMzc7NDBtIBtbMzE7NDFt3BtbMzc7NDBtIBtbMzE7NDFt3BtbMzc7NDBtIBtbMzE7NDFt3BtbMzc7NDBtIBtbMzE7NDFt3BtbMzc7NDBtIBtbMzE7NDFt3BtbMzc7NDBtIBtbMzE7NDFt3BtbNDBt3yAgG1s0MW3cG1s0MG3f3BtbMG0NCiBXZWxjb21lIBtbMW0bWFJFQUxOQU1FOzIwG1wbWzA7MzBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTszN23f398g3yDfIN/fICDf398g3yDfG1swbQ0KIFlvdSd2ZSByZWFjaGVkIBtbMTszMW1BG1szMm1OG1szNG1TG1szM21JG1swOzMwOzQ3bXRleBtbMzc7NDBtIG9uICAgICAgICAbWzE7MzA7NDFt3xtbNDBt398bWzM3bSAbWzMwOzQxbd8bWzQwbd8bWzQxbd8bWzM3OzQwbSAbWzMwOzQxbd8bWzQwbd8bWzQxbd8bWzM3OzQwbSAbWzMwOzQxbd8bWzQwbd/fG1szN20gG1szMG3f3xtbNDFt3xtbMzc7NDBtIBtbMzA7NDFt3xtbNDBt3xtbNDFt3xtbMzc7NDBtIBtbMzA7NDFt3xtbMzc7NDBtIBtbMzA7NDFt3xtbMzc7NDBtIBtbMzA7NDFt3xtbNDBt398bWzM3bSAbWzMwbd/fG1s0MW3fG1szNzs0MG0gG1szMG3fG1szN20gG1szMDs0MW3fG1s0MG3fG1s0MW3fG1szNzs0MG0gG1szMDs0MW3fG1s0MG3fG1s0MW3fG1swbQ0KIG5vZGUgG1sxbRtYbm9kZWlkOzgbXBtbMG0uICAgICAgICAgICAgICAgICAgIBtbMTszMTs0MW3cG1szNzs0MG0gICAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxbd/fG1s0MW3cG1szNzs0MG0gICAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzQwbd/cG1szN20gG1szMTs0MW3cG1szNzs0MG0gG1szMTs0MW3cG1szNzs0MG0gG1szMTs0MW3cG1swbSAgICAgG1sxOzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzQwbSAbWzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzM3OzQwbSAbWzMxOzQxbdwbWzBtDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxbd/f3yDf398g3yDfIN/f3yAgIN8g3yDfIN/f3yDf398gICDfIN8g39/fIN8g3xtbMG0NCiBUaGVyZSBhcmUgG1sxbRtYT047MhtcG1swbSBvdGhlcnMgb25saW5lIGFzICAgIBtbMTszMW1QbGVhc2UgYmUgcGF0aWVudCB3aGlsZSB3ZRtbMG0NCiB3ZWxsIGFuZCAbWzFtG1hTVEFUUy5OVVNFUlM7MhtcG1swbSBuZXcgdXNlcnMgdG9kYXkuICAgICAgICAgICAgICAgICAgICAbWzE7MzFtaW5ub3ZhdGUgYW5kIGlyb24gb3V0IHRoZSBidWdzG1swbQ0KDQogWW91IGhhdmUgG1sxbRtYQllURVNMRUZUOy0xMBtcG1swbSBjcmVkaXRzIGxlZnQNCiBhbmQgG1sxbRtYTUFJTFc7LTMbXCAbWzBtbWVzc2FnZXMgaW4geW91ciBtYWlsYm94Lg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxbVByZXNzG1swbSAbWzE7NTszMm0wG1swOzE7MzNtIBtbMzdtTWFpbiBNZW51G1swbQ0KDQo=","isPublic":0,"isAccessible":1,"type":"i","key":[1,null,null,null,null,null,null,null,null,null],"date":"2020-07-08T01:30:48.608Z"}

View File

@ -1 +1 @@
{"version":1,"frame":998,"index":"a","owner":9,"cost":0,"content":"G1swbRtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtDQogG1sxOzMxbdzcxNwbWzM3bSAbWzMybdzcxNwbWzM3bSAbWzM0bdzcxNwbWzM3bSAbWzMzbdzcG1swbSAbWzMwOzQ3bSDc3CAgINzcxNwg3Nwg3CAbWzM3OzQwbQ0KIBtbMTszMW3c3MSxG1szN20gG1szMm2ysRtbMzdtIBtbMzJtsRtbMzdtIBtbMzRt39/E3BtbMzdtIBtbMzNt3NwbWzBtIBtbMzA7NDdtILKxxCAgsrHE3yDf38LfIBtbMzc7NDBtDQogG1sxOzMxbbGwG1swbSAbWzE7MzFtsBtbMG0gG1sxOzMybbGwG1swbSAbWzE7MzJtsBtbMG0gG1sxOzM0bbGwG1swbSAbWzE7MzRtsBtbMG0gG1sxOzMzbbGwG1swbSAbWzMwOzQ3bSCxsCCwILGwILAgsbAgsCAbWzM3OzQwbQ0KIBtbMTszMW3f38TfG1swbSAbWzE7MzJt398bWzBtIBtbMTszMm3fG1swbSAbWzE7MzRt39/E3xtbMG0gG1sxOzMzbd/fG1swbSAbWzMwOzQ3bSDf38TfIN/fxN8g398g3yAbWzM3OzQwbQ0KG1sxOzMwbcTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExBtbMG0NCg0KG1sxbUhtbSwgYSBzeXN0ZW0gG1szMW1FUlJPUhtbMzdtIG9jY3VycmVkLhtbMG0NChtbMW1Ob2RlICA6IBtbMzFtG1hub2RlaWQ7OBtcG1swbQ0KG1sxbVN5c3RlbTogG1szMW1AQkJTLUwxMEAbWzBtDQoNChtbMW1JZiB0aGlzIGtlZXBzIGhhcHBlbmluZywgeW91IG1heSBuZWVkIHRvIHRlbGwgdGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yG1swbQ0KG1sxbXZpYSBwYWdlIBtbMzJtKjA4G1swbQ0KDQobWzFtVG8gdHJ5IGFnYWluLCBwbGVhc2UgcHJlc3MgG1szMm0wG1swbQ0K","isPublic":1,"isAccessible":1,"type":"i","key":[0,null,null,null,null,null,null,null,null,null],"date":"2021-02-18T00:52:54.117Z"} {"version":1,"frame":998,"index":"a","owner":9,"cost":0,"content":"G1swbRtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtDQogG1sxOzMxbdzcxNwbWzM3bSAbWzMybdzcxNwbWzM3bSAbWzM0bdzcxNwbWzM3bSAbWzMzbdzcG1swbSAbWzMwOzQ3bSDc3CAgINzcxNwg3Nwg3CAbWzM3OzQwbQ0KIBtbMTszMW3c3MSxG1szN20gG1szMm2ysRtbMzdtIBtbMzJtsRtbMzdtIBtbMzRt39/E3BtbMzdtIBtbMzNt3NwbWzBtIBtbMzA7NDdtILKxxCAgsrHE3yDf38LfIBtbMzc7NDBtDQogG1sxOzMxbbGwG1swbSAbWzE7MzFtsBtbMG0gG1sxOzMybbGwG1swbSAbWzE7MzJtsBtbMG0gG1sxOzM0bbGwG1swbSAbWzE7MzRtsBtbMG0gG1sxOzMzbbGwG1swbSAbWzMwOzQ3bSCxsCCwILGwILAgsbAgsCAbWzM3OzQwbQ0KIBtbMTszMW3f38TfG1swbSAbWzE7MzJt398bWzBtIBtbMTszMm3fG1swbSAbWzE7MzRt39/E3xtbMG0gG1sxOzMzbd/fG1swbSAbWzMwOzQ3bSDf38TfIN/fxN8g398g3yAbWzM3OzQwbQ0KG1sxOzMwbcTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExBtbMG0NCg0KG1sxbUhtbSwgYSBzeXN0ZW0gG1szMW1FUlJPUhtbMzdtIG9jY3VycmVkLhtbMG0NChtbMW1Ob2RlICA6IBtbMzFtG1hub2RlaWQ7OBtcG1swbQ0KG1sxbVN5c3RlbTogG1szMW0bWEJCUzsxMBtcG1swbQ0KDQobWzFtSWYgdGhpcyBrZWVwcyBoYXBwZW5pbmcsIHlvdSBtYXkgbmVlZCB0byB0ZWxsIHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvchtbMG0NChtbMW12aWEgcGFnZSAbWzMybSowOBtbMG0NCg0KG1sxbVRvIHRyeSBhZ2FpbiwgcGxlYXNlIHByZXNzIBtbMzJtMBtbMG0NCg==","isPublic":1,"isAccessible":1,"type":"i","key":[0,null,null,null,null,null,null,null,null,null],"date":"2021-02-18T00:52:54.117Z"}

View File

@ -1 +1 @@
{"version":1,"frame":99,"index":"a","owner":9,"cost":0,"content":"G1swbRtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtICAgICAgICAgG1sxbdq/G1swbQ0KIBtbMTszMW3c3MTcG1szN20gG1szMm3c3MTcG1szN20gG1szNG3c3MTcG1szN20gG1szM23c3BtbMG0gG1szMDs0N20g3NwgICDc3MTcINzcINwgG1szNzs0MG0gICAbWzFtwr/av9q/2rTDv7/awr8bWzBtICAgICAgICAgICAgG1sxOzMwbUBEQVRFVElNRXxMMTVAG1swbQ0KIBtbMTszMW3c3MSxG1szN20gG1szMm2ysRtbMzdtIBtbMzJtsRtbMzdtIBtbMzRt39/E3BtbMzdtIBtbMzNt3NwbWzBtIBtbMzA7NDdtILKxxCAgsrHE3yDf38LfIBtbMzc7NDBtICAgs7Ozs7Ozs7Ozs7Ozw9kgICAgICAgICAgICAgICAgICAgG1sxOzMwbUBUSU1FfEw4QBtbMG0NCiAbWzE7MzFtsbAbWzBtIBtbMTszMW2wG1swbSAbWzE7MzJtsbAbWzBtIBtbMTszMm2wG1swbSAbWzE7MzRtsbAbWzBtIBtbMTszNG2wG1swbSAbWzE7MzNtsbAbWzBtIBtbMzA7NDdtILGwILAgsbAgsCCxsCCwIBtbMzc7NDBtICAgG1sxOzMwbcG0wNnA2cDZwNnAtMHZG1swbQ0KIBtbMTszMW3f38TfG1swbSAbWzE7MzJt398bWzBtIBtbMTszMm3fG1swbSAbWzE7MzRt39/E3xtbMG0gG1sxOzMzbd/fG1swbSAbWzMwOzQ3bSDf38TfIN/fxN8g398g3yAbWzM3OzQwbSAgIBtbMTszMG3E2RtbMzFtICAgICAgICAbWzMwbcTZG1swbQ0KG1sxOzMwbcTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExBtbMG0gICAgICAgICAgIBtbMTs1OzMybSowIxtbMDsxbSB0byBnZXQgYmFjayB0byB0aGUgTWFpbiBNZW51G1swbQ0KDQogIFRoYW5rcyBmb3IgdmlzaXRpbmcgG1sxOzMxbUEbWzMybU4bWzM0bVMbWzMzbUkbWzA7MzA7NDdtdGV4G1szNzs0MG0gG1sxbUBNRU1PMi1MMjBAG1swbQ0KICBZb3Ugd2VyZSBvbiBub2RlIBtbMW0bWG5vZGVpZDs4G1wgG1swbXByb3ZpZGVkIGJ5IBtbMW1AQkJTLUwxMEAbWzBtDQogIHdpdGggG1sxbUBTVEFUUy5MVE9EQVktWjJAG1swbSBvdGhlcnMuDQoNCiAgWW91IGhhdmUgG1sxbUBCWVRFU0xFRlRAG1swbSBjcmVkaXRzIGxlZnQgYW5kIBtbMW1ATUFJTFdAIBtbMG1tZXNzYWdlcyBpbiB5b3VyIG1haWxib3guDQogIFRvZGF5IHlvdSd2ZSBiZWVuIG9uIGZvciAbWzFtQFNUQVRTLlRUT0RBWS1aMkAbWzBtIG1pbnV0ZXMuDQoNCiAgG1sxbVByZXNzG1swbSAbWzE7NTszMm0jG1swOzE7MzNtIBtbMzdtdG8gZGlzY29ubmVjdC4bWzBtDQo=","isPublic":1,"isAccessible":1,"type":"i","key":[0,null,null,null,null,null,null,null,null,null],"date":"2020-07-15T12:15:47.742Z"} {"version":1,"frame":99,"index":"a","owner":9,"cost":0,"content":"G1swbRtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtICAgICAgICAgG1sxbdq/G1swbQ0KIBtbMTszMW3c3MTcG1szN20gG1szMm3c3MTcG1szN20gG1szNG3c3MTcG1szN20gG1szM23c3BtbMG0gG1szMDs0N20g3NwgICDc3MTcINzcINwgG1szNzs0MG0gICAbWzFtwr/av9q/2rTDv7/awr8bWzBtICAgICAgICAgICAgG1sxOzMwbRtYREFURVRJTUU7MTUbXBtbMG0NCiAbWzE7MzFt3NzEsRtbMzdtIBtbMzJtsrEbWzM3bSAbWzMybbEbWzM3bSAbWzM0bd/fxNwbWzM3bSAbWzMzbdzcG1swbSAbWzMwOzQ3bSCyscQgILKxxN8g39/C3yAbWzM3OzQwbSAgILOzs7Ozs7Ozs7Ozs8PZICAgICAgICAgICAgICAgICAgIBtbMTszMG0bWFRJTUU7OBtcG1swbQ0KIBtbMTszMW2xsBtbMG0gG1sxOzMxbbAbWzBtIBtbMTszMm2xsBtbMG0gG1sxOzMybbAbWzBtIBtbMTszNG2xsBtbMG0gG1sxOzM0bbAbWzBtIBtbMTszM22xsBtbMG0gG1szMDs0N20gsbAgsCCxsCCwILGwILAgG1szNzs0MG0gICAbWzE7MzBtwbTA2cDZwNnA2cC0wdkbWzBtDQogG1sxOzMxbd/fxN8bWzBtIBtbMTszMm3f3xtbMG0gG1sxOzMybd8bWzBtIBtbMTszNG3f38TfG1swbSAbWzE7MzNt398bWzBtIBtbMzA7NDdtIN/fxN8g39/E3yDf3yDfIBtbMzc7NDBtICAgG1sxOzMwbcTZG1szMW0gICAgICAgIBtbMzBtxNkbWzBtDQobWzE7MzBtxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEG1swbSAgICAgICAgICAgG1sxOzU7MzJtKjAjG1swOzFtIHRvIGdldCBiYWNrIHRvIHRoZSBNYWluIE1lbnUbWzBtDQoNCiAgVGhhbmtzIGZvciB2aXNpdGluZyAbWzE7MzFtQRtbMzJtThtbMzRtUxtbMzNtSRtbMDszMDs0N210ZXgbWzM3OzQwbSAbWzFtG1hSRUFMTkFNRTsyMBtcG1swbQ0KICBZb3Ugd2VyZSBvbiBub2RlIBtbMW0bWG5vZGVpZDs4G1wgG1swbXByb3ZpZGVkIGJ5IBtbMW0bWEJCUzsxMBtcG1swbQ0KICB3aXRoIBtbMW0bWFNUQVRTLkxUT0RBWTsyG1wbWzBtIG90aGVycy4NCg0KICBZb3UgaGF2ZSAbWzFtG1hCWVRFU0xFRlQ7LTEwG1wbWzBtIGNyZWRpdHMgbGVmdCBhbmQgG1sxbRtYTUFJTFc7LTMbXCAbWzBtbWVzc2FnZXMgaW4geW91ciBtYWlsYm94Lg0KICBUb2RheSB5b3UndmUgYmVlbiBvbiBmb3IgG1sxbRtYU1RBVFMuVFRPREFZOy0zG1wbWzBtIG1pbnV0ZXMuDQoNCiAgG1sxbVByZXNzG1swbSAbWzE7NTszMm0jG1swOzE7MzNtIBtbMzdtdG8gZGlzY29ubmVjdC4bWzBtDQo=","isPublic":1,"isAccessible":1,"type":"i","key":[0,null,null,null,null,null,null,null,null,null],"date":"2020-07-15T12:15:47.742Z"}

View File

@ -1 +1 @@
{"version":1,"frame":99,"index":"b","owner":9,"cost":0,"content":"G1swbRtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtICAgICAgICAgG1sxbdq/G1swbQ0KIBtbMTszMW3c3MTcG1szN20gG1szMm3c3MTcG1szN20gG1szNG3c3MTcG1szN20gG1szM23c3BtbMG0gG1szMDs0N20g3NwgICDc3MTcINzcINwgG1szNzs0MG0gICAbWzFtwr/av9q/2rTDv7/awr8bWzBtICAgICAgICAgICAgG1sxOzMwbUBEQVRFVElNRXxMMTVAG1swbQ0KIBtbMTszMW3c3MSxG1szN20gG1szMm2ysRtbMzdtIBtbMzJtsRtbMzdtIBtbMzRt39/E3BtbMzdtIBtbMzNt3NwbWzBtIBtbMzA7NDdtILKxxCAgsrHE3yDf38LfIBtbMzc7NDBtICAgs7Ozs7Ozs7Ozs7Ozw9kgICAgICAgICAgICAgICAgICAgG1sxOzMwbUBUSU1FfEw4QBtbMG0NCiAbWzE7MzFtsbAbWzBtIBtbMTszMW2wG1swbSAbWzE7MzJtsbAbWzBtIBtbMTszMm2wG1swbSAbWzE7MzRtsbAbWzBtIBtbMTszNG2wG1swbSAbWzE7MzNtsbAbWzBtIBtbMzA7NDdtILGwILAgsbAgsCCxsCCwIBtbMzc7NDBtICAgG1sxOzMwbcG0wNnA2cDZwNnAtMHZG1swbQ0KIBtbMTszMW3f38TfG1swbSAbWzE7MzJt398bWzBtIBtbMTszMm3fG1swbSAbWzE7MzRt39/E3xtbMG0gG1sxOzMzbd/fG1swbSAbWzMwOzQ3bSDf38TfIN/fxN8g398g3yAbWzM3OzQwbSAgIBtbMTszMG3E2RtbMzFtICAgICAgICAbWzMwbcTZG1swbQ0KG1sxOzMwbcTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExBtbMG0NCg0KICBUaGFua3MgZm9yIHZpc2l0aW5nIBtbMTszMW1BG1szMm1OG1szNG1TG1szM21JG1swOzMwOzQ3bXRleBtbMzc7NDBtIBtbMW1ATUVNTzItTDIwQBtbMG0NCiAgWW91IHdlcmUgb24gbm9kZSAbWzFtG1hub2RlaWQ7OBtcIBtbMG1wcm92aWRlZCBieSAbWzFtQEJCUy1MMTBAG1swbQ0K","isPublic":1,"isAccessible":1,"type":"t","key":[1,null,null,null,null,null,null,null,null,null],"date":"2020-07-08T01:48:01.797Z"} {"version":1,"frame":99,"index":"b","owner":9,"cost":0,"content":"G1swbRtbMTszMG3ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQbWzBtICAgICAgICAgG1sxbdq/G1swbQ0KIBtbMTszMW3c3MTcG1szN20gG1szMm3c3MTcG1szN20gG1szNG3c3MTcG1szN20gG1szM23c3BtbMG0gG1szMDs0N20g3NwgICDc3MTcINzcINwgG1szNzs0MG0gICAbWzFtwr/av9q/2rTDv7/awr8bWzBtICAgICAgICAgICAgG1sxOzMwbRtYREFURVRJTUU7MTUbXBtbMG0NCiAbWzE7MzFt3NzEsRtbMzdtIBtbMzJtsrEbWzM3bSAbWzMybbEbWzM3bSAbWzM0bd/fxNwbWzM3bSAbWzMzbdzcG1swbSAbWzMwOzQ3bSCyscQgILKxxN8g39/C3yAbWzM3OzQwbSAgILOzs7Ozs7Ozs7Ozs8PZICAgICAgICAgICAgICAgICAgIBtbMTszMG0bWFRJTUU7OBtcG1swbQ0KIBtbMTszMW2xsBtbMG0gG1sxOzMxbbAbWzBtIBtbMTszMm2xsBtbMG0gG1sxOzMybbAbWzBtIBtbMTszNG2xsBtbMG0gG1sxOzM0bbAbWzBtIBtbMTszM22xsBtbMG0gG1szMDs0N20gsbAgsCCxsCCwILGwILAgG1szNzs0MG0gICAbWzE7MzBtwbTA2cDZwNnA2cC0wdkbWzBtDQogG1sxOzMxbd/fxN8bWzBtIBtbMTszMm3f3xtbMG0gG1sxOzMybd8bWzBtIBtbMTszNG3f38TfG1swbSAbWzE7MzNt398bWzBtIBtbMzA7NDdtIN/fxN8g39/E3yDf3yDfIBtbMzc7NDBtICAgG1sxOzMwbcTZG1szMW0gICAgICAgIBtbMzBtxNkbWzBtDQobWzE7MzBtxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEG1swbQ0KDQogIFRoYW5rcyBmb3IgdmlzaXRpbmcgG1sxOzMxbUEbWzMybU4bWzM0bVMbWzMzbUkbWzA7MzA7NDdtdGV4G1szNzs0MG0gG1sxbRtYUkVBTE5BTUU7MjAbXBtbMG0NCiAgWW91IHdlcmUgb24gbm9kZSAbWzFtG1hub2RlaWQ7OBtcIBtbMG1wcm92aWRlZCBieSAbWzFtG1hCQlM7MTAbXBtbMG0NCg==","isPublic":1,"isAccessible":1,"type":"t","key":[1,null,null,null,null,null,null,null,null,null],"date":"2020-07-08T01:48:01.797Z"}