Google App Engine
�|���ׂĂ�20���v���W�F�N�g����X�^�[�g����
Google App Engine�v���_�N�g�}�l�[�W���[ �s�[�g�E�N�[�������~
�u�����O�v�u�i�^���[�v�J���ҁA�i�^�[�V�� �������F��
��IT�ҏW��
2008/6/24
�v���_�N�g�}�l�[�W���[�ɕ����AApp Engine�̐��藧���ƌ���A�r�W�l�X�AAmazon EC2�Ƃ̈Ⴂ�A�����ē��{�l�ւ̊���
�@6��10���ɉ��l�p�V�t�B�R�ŁuGoogle Developer Day 2008�v���J�Â���AGoogle App Engine�i�ȉ��AGAE�j�`�[���̃v���_�N�g�}�l�[�W���[�̃s�[�g�E�N�[�����iPete Koomen�j���͓����̊�u���ŁA���Ѓ\�t�g�E�F�A�G���W�j�A�̉L�����q���ƂƂ���GAE���Љ���i�Q�ƁF�yGoogle Developer Day��u�����|�[�g�z�A���h���C�h��OpenSocial�Ȃǃf�������A�O�[�O���j�B���̌�̃Z�b�V�����ł́A���Ѓ\�t�g�E�F�A�G���W�j�A�̃u���b�g�E�X�g���L�����ƁAGAE��Web�A�v���P�[�V�������쐬���ē��삳����l�q���f���ŏЉ���B
�u�����̃s�[�g�E�N�[������ |
�@�Z�b�V�����Ō�̒��u�҂���̎���R�[�i�[�ł́A��͂�GAE��Python�̎��ɃT�|�[�g����v���O���~���O����Ɋւ��鎿�₪���������i2008�N6�����݁AGAE�Ŏg���錾���Python�̂݁j�B�N�[�������́u����A�J���҂���̃t�B�[�h�o�b�N���Q�l��GAE�Ŏg����v���O���~���O��������낢��Ƒ��₵�Ă����\�肾�v�Ƃ̉ɂƂǂ߂Ă������APyAMF���g�����Ƃ�AMF�iAction Message Format�A���k���̍����o�C�i���f�[�^�t�H�[�}�b�g�j�ʐM�ɂ����GAE��Python�A�v���P�[�V������Flash�n�Z�p�iFlex��Adobe AIR�j�̃N���C�A���g�Ƃ̘A�g���\�ƕt���������ʂ��������B
�i�^�[�V���̗������F�� |
�@���̌�́�IT�ҏW���ōs�����C���^�r���[�ŁA�����GAE�ɂ��Ă��܂��܂Șb������Ă��ꂽ�̂ŁA���̖͗l�����`�����悤�B�C���^�r���A�[�́A�u�����O�v�̊J���҂ŁA���݂́u�ŐV�^���y�j���[�X�T�C�g�v�Ƃ��Ė���y���Ă���u�i�^���[�v�ŋZ�p��C����Ă���i�^�[�V���̗������F���B
�@�������́A�l�⏬���ȉ�Ђ�Web�T�C�g���^�c���Ă����ۂ�GAE�͂ǂ̂悤�Ɋ��p�ł���̂��𒆐S�ɁAGAE�̐��藧���⌻��A�r�W�l�X�AAmazon EC2�Ƃ̈Ⴂ�A�T�|�[�g����v���O���~���O����A�ʃT�[�r�X�Ƃ̘A�g�A�v���g�R���Ȃǂɂ��ăN�[�������Ɏ��₵���B
Google App Engine�̐��藧���ƌ���
�������F�i�ȉ��A�����j�F�܂��́AGAE�̌���ɂ��Ă��������܂��B���\����2�J�������܂������A�J���҂���̔����͂������ł����H
�s�[�g�E�N�[�����i�ȉ��A�N�[�����j�F�t�B�[�h�o�b�N���������������Ă���B�傫�������āu���ɑf���炵���v�u�{���Ɏg���₷���v�u�т����肵�Ă���v�Ƃ��������ƁA�u�f���炵�����ǁA�K�v�ȋ@�\������v�Ƃ����������������B
�����F�J�������A�v���P�[�V�����̐��́H 1���ɂǂꂭ�炢�����Ă���Ǝv���܂����H
�N�[�����F��̓I�Ȑ����͕�����Ȃ����A��������̖ʔ����A�v���P�[�V�����������Ă��Ă���B���J�����A���p�ł���J���҂𒊑I��1���l�ɍi��Ɣ��\�������A����1���l����R�ꂽ�J���҂ɂ̓E�F�C�e�B���O���X�g�ɃT�C���A�b�v���đ҂��Ă��炤���ƂɂȂ����B���ʁA15���l�ȏオ�ҋ@����Ƃ����ɂȂ��Ă������A2�T�ԑO�Ɉ�ʌ��J���Ă��ׂĂ̊J���҂Ɏg���Ă��炦��ɂȂ����B
2008�N5��28���̈�ʌ��J�����AGAE��SDK�ō쐬�����A�v���P�[�V������GAE�Ƀf�v���C����ۂɕK�v��GAE�̃A�J�E���g�����炤�ɂ́ASMS�iShort Message Service�A�d�b�ԍ��Ōl�����ʂ��đ���Z�����[���T�[�r�X�j�Ō��R�[�h��������悤�ɂȂ��Ă����B�������A���{�̈ꕔ�g�ѓd�b�L�����A�͊C�O����SMS�����̂ɑΉ����Ă��Ȃ����߁A�ăO�[�O�������SMS�����Ȃ��Ƃ�����肪����A���{�̊J����]�҂����f������Ƃ������Ԃ������Ă����B
Google App Engine�̃A�J�E���g�\�����݃t�H�[��
�N�[�������͖`���ŏЉ���Z�b�V�������Ɂu�ߓ����ɑΉ�����v�Ɣ��\�������ʁA2008�N6��24�����݁ASMS�ł͂Ȃ��g�ѓd�b�p���[���A�h���X����͂���t�H�[���ɕς���Ă������A���[���A�h���X��@�̒��O�܂ł̃��[�U�[������͂ł���̂�20�P�^�܂łɂȂ��Ă���ȂǁA�܂�GAE�Ƀf�v���C�ł��Ȃ����{�̊J����]�҂�����悤���B
�����FGAE���n�߂����������́A�ǂ�Ȃ��̂ł����H
�N�[�����F���Ƃ����Ă��d�v�Ȃ̂��A��������Web�A�v���P�[�V���������Ƃ������Ǝ��̂����ɓ���Ƃ������Ƃ��B���낢��ȉۑ肪����B�Ⴆ�A�z�X�e�B���O�A�T�[�o�̐ݒ�A�f�[�^�x�[�X�̕��́A���M���O������ă��j�^�����O�ȂǁA�܂��Z�b�g�A�b�v�ɑ���R�X�g������������B�����āA�A�v���P�[�V�������ł���������Ȃ�傫�ȃG�l���M�[���g��Ȃ���Ȃ�Ȃ��B�Ⴆ�A�g���t�B�b�N�������āA�������������z�X�g�}�V�����ς����Ȃ��Ȃ����ꍇ�́A�����̃z�X�g��p�ӂ��Ȃ���Ȃ�Ȃ����A�A�v���P�[�V������f�[�^�x�[�X�̕��ו��U�����Ȃ���Ȃ�Ȃ��B�{���ł���A�A�v���P�[�V�������̂ɂ����ƃR�X�g���|�������Ƃ��낾���A���ꂪ�ł��Ȃ��ŒQ���Ă���J���҂��������Ƃ��낤�B
�@GAE�͂܂��A2�̃S�[�����ӎ����ăT�[�r�X���n�߂��B1�̓A�v���P�[�V�������ł��邾���ŏ�����X�^�[�g�ł���悤�ɁB�����Ă���1�́A�g�������T�|�[�g���邱�ƁB���݁A���낢��ȃz�X�e�B���O�T�[�r�X��ėp�R���s���[�e�B���O�����邪�AGAE�͂����܂ł�Web�A�v���P�[�V�����̊J���ɏœ_���i���č�����B����̂ɁA�����̃X�^�b�N�̃��C���𒊏ۉ����ĊJ������藣�����Ƃ��ł����B�J���҂̕��ŃT�[�o��p�ӂ���K�v���Ȃ����A���ו��U���S�z����K�v���Ȃ��B
�����FGAE�̃v���W�F�N�g�͉�Ђ̕��j�Ƃ������́A�J���҂̒�Ă���n�܂����̂ł��傤���H
�N�[�����F���������Ƃ���I ���ۂɁA�����O�[�O���̊J���҂��\�����[�V����������Ă��������ł��Ȃ�̎��Ԃ��₵���BGAE�̓O�[�O���������Ă���C���t�����J���҂ɉ�����悤�Ƃ������ƂŊJ�n�����B
�����FGAE���瓾����O�[�O���̗��v�Ƃ͉��ł��傤���H ����ɘb���悤�ɂ��肢���܂��B
�N�[�����F����!? OK�A����������i�j�B ����GAE�͊��S�ɖ������B�����A���N�̔N���ɂ����āA�J���҂̕��X�ɂ�葽���̃R���s���[�e�B���O���\�[�X���w�����Ă��������@�����Ă����B�����ŁA���ۂɃf�B�X�N�X�y�[�X��ш��\�������邪�A�ŏ��͖������B�����ł��d�v�Ȃ��Ƃ́AWeb���v���b�g�t�H�[���Ƃ��Ăǂ�ǂ�ǂ�ǂ�O�ɐi�߂����Ƃ������Ƃ��B
�@GAE����������Ƃɂ���ĊJ���҂͎d�������₷���Ȃ��āA���ǂ��A�v���P�[�V��������邱�Ƃł���B�����قǗL�p�������܂�B�L�p�������܂���܂�قǂ����ő����̎��Ԃ��g���Ă����B���������T�C�N�����ł��邱�Ƃɂ���āA�O�[�O���̗��v�ɂȂ����Ă���B
���ySNS�́uiLike�v��Google App Engine�𗘗p
���ɁA��������GAE��Amazon EC2�̈Ⴂ�ւƎ���̓��e���ڍs���Ă������B
�����FAmazon EC2�́A�܂��܂����{�ł͐l�C���Ȃ��ł����A�C�O�ł͐V���T�[�r�X�̃r�W�l�X�̊�ՂƂ��Ďg���Ă��܂��BGAE�����̂悤�ȖړI��Amazon EC2�̂悤�Ɏg���邱�Ƃ��ӎ������̂ł��傤���B
�N�[�����FGAE�́A�ȒP�Ɏn�߂��邱�ƂƊȒP�Ɋg���ł��邱�ƂŁA���K�͂ȃO���[�v�ł̊J���Ƀt�B�b�g���Ă���B�Ȃ��Ȃ�A�K�͂���������Ώ������قǃC���t���̐����Ɏ��Ԃ�������̂�������炾�B����Ɠ����ɁA�����͔��Ƀp���t���ȃc�[����������Ƃ��v���Ă��āA����͑���GAE�̃p�[�g�i�[���o�Ă��邾�낤�B�Ⴆ�A���ySNS��iLike�B�ނ�̃K�W�F�b�g��GAE��ɍ���Ă���B
�@Amazon EC2�Ƃ́A���������v���_�N�g���قȂ�ƍl����BGAE�͔ėp�̃R���s���[�e�B���O�̃v���b�g�t�H�[���ł͂Ȃ��B�����܂ł�Web�A�v���P�[�V�����̊J���ɓ������Ă���BWeb�J���҂ɂ͔��ɕ]�����Ă��炦�邾�낤�B
�����F����́A���̎��₾������ł����i�j�ALinux�̃z�X�e�B���O�ł͂Ȃ�Web�A�v���P�[�V�����̃z�X�e�B���O�ɂ����̂͂Ȃ��ł����H
�N�[�����F�i���āj�J��Ԃ��ɂȂ邪�O�[�O���Ƃ��Ă�Web���v���b�g�t�H�[����O�i�����������炾�B�����͕�����Ȃ����A���܂͂����܂ł�Web�A�v���P�[�V�����ɓ������Ă���B
�����FGAE�ɂł���Amazon EC2�ɂł��邱�Ƃ͉��ł��傤���B
�N�[�����F�Ⴆ�A��K�͂ȃR���s���[�e�B���O���Ƃ��A���Ȃ�̃f�[�^���\�[�X���K�v�ʼn����Ԃ����Z���������Ȃ���Ȃ�Ȃ����̂��BGAE�̓��N�G�X�g��������ď����ȏ������s���ă��X�|���X��Ԃ��Ƃ������N�G�X�g�쓮�̃A�v���P�[�V�����������B�I�t���C���̑�K�͂ȏ����ɂ͓K�ł͂Ȃ��B
�����F�t�ɁAAmazon EC2�ɂł���GAE�ɂł��邱�Ƃ͉��ł��傤���B
�N�[�����F�����܂ł��A�ȒP�ɃX�^�[�g�ł��ĊȒP�Ɋg���ł���Ƃ������Ƃ��B
�����F����ŁAAmazon EC2�̎���͏I���ł��B
�N�[�����F�t�[�i�j�B
Google App Engine��20���v���W�F�N�g���琶�܂ꂽ
�����FGAE�́A������u20�����[���v�i�Ζ����Ԃ�20���͎����̍D���Ȃ��Ƃ�����O�[�O���̎Г����[���j�̃v���W�F�N�g�Ŏn�܂����̂ł��傤���H
�N�[�����F�����B�ŏ��͎��͂��Ȃ��������A2�l�̃G���W�j�A��1�l�̃v���_�N�g�}�l�[�W���[�Ŏn�܂����B
�����F���܂͉��l���炢�̃v���W�F�N�g�ł����H
�N�[�����F��I�Ȑ����͂����Ȃ����A�����ȃ`�[���ł���Ă���B
�����F�`�[���̖������S�͂ǂ��Ȃ��Ă��܂����H
�N�[�����F�f���炵���G���W�j�A���������̃v���W�F�N�g�ɂ�������Ă���B�܂��A�u���b�g�i�u���b�g�E�X�g���L�����A�`���ŏЉ���\�t�g�E�F�A�E�G���W�j�A�j�����āA�ނ��u�N�H�[�^�iQuota�j�V�X�e���v��J������������B�����ȃ`�[���ŁuDatastore API�v��S�����ABigTable���G�L�X�|�[�g����`�[��������BPython��������O�C�h�E���@�����b�T���iGuido Van Rossum���j�����낢��Ȏd�������Ă���B�ق��ɂ��u�Ǘ��҃R���\�[���v������Ă���J���҂�A2�l�̃v���_�N�g�}�l�[�W���[�ȂǁA�������S�͂������肵�Ă���B
�����FBigTable�͎Г��Ɠ������̂ł����H
�N�[�����F�����Ŏg���Ă���BigTable�̂����Ƀ��C��������A���̃��C�����G�L�X�|�[�g���āuDatastore API�v�Ƃ��Ďg���Ă���B
�u�N�H�[�^�V�X�e���v��GAE���݂��Ă���A�����Ŏg����͈́iQuota�j����CPU�̎g�p�ʂɐ������|����V�X�e���ŁAGAE�ɂ�������ɕ��ׂ��|����Ȃǂ̗��p��h���B�uBigTable�v�͑�ʂ̃f�[�^���g�����߂̃O�[�O���̃f�[�^�x�[�X�̂悤�ȕ��U�X�g���[�W�Z�p�B�uDatastore API�v�̓A�v���P�[�V�����̃f�[�^��BigTable���g�����ĕێ�����A����܂��f�[�^�x�[�X�̂悤��GAE�̎d�g�݂�1�BSQL���C�N��GQL�ŁiGoogle Query Language�j����ł���B
�����F���݊J�����Ă���l����A�u�N�H�[�^�V�X�e���̏���ɂЂ�������̂ł́H�v�ƐS�z���Ă���Ƃ������͂Ȃ��̂ł��傤���H
�N�[�����F�m���ɂ�����C�ɂ��Ă���J���҂����āA���낢��Ƌ��c���Ă���B���ׂĂ�GAE�̃A�v���P�[�V�����́u�N�H�[�^�V�X�e���v��CPU�����肵�Ă��邪�A�����ƕK�v���Ƃ����J���҂ɂ͎��́A�����ƃ��N�G�X�g�������ł���悤�ɁACPU�N�H�[�^�𑝂₷���@���P�[�X�E�o�C�E�P�[�X�ŕ]�����Ē��Ă���B
�ʃT�[�r�X�Ƃ̘A�g��HTTP�ȊO�̃v���g�R���ɂ���
�����F�����̃Z�b�V�����ŁA�u����A�J���҂���̃t�B�[�h�o�b�N���Q�l��GAE�Ŏg����v���O���~���O��������낢��Ƒ��₵�Ă����v�Ƙb���Ă��܂������A�Ȃ��ŏ���Python���T�|�[�g�����̂ł����H
�N�[�����F���ɁA�O�[�O������БS�̂Ƃ���Python���D���ł���Ƃ������ƁBPython�̓O�[�O���ł�������g���Ă��邵�A�O�C�h�E���@�����b�T����GAE�̃`�[���ɂ���B����͕ʂƂ��Ă��A���ɂ悢���ꂾ�Ǝv���B
�����FPython�͌���Ƃ��čD���Ȃ̂ł����H ����Ƃ��A�p�t�H�[�}���X����������H
�N�[�����F��������i�j�B���Ɋw�K���ȒP�Ń}�l�[�W�h�R�[�h�Ȃ̂ŁAGAE�ɓK���Ă���B
�����FHTTP�ȊO�̃v���g�R�����T�|�[�g����\��͂���܂����H
�N�[�����F����́A�����炭RPC��L���[�C���O�̂��Ƃ��܂߂Ă��낤�ˁB�������A�ق��̉\��������B���܁A�I�t���C���̃v���Z�X�̊J�������Ă���B�Ⴆ�A�W���u�̃X�P�W���[�����Ƃ��A�o�b�`�������Ƃ��Ɋ֘A���Ĕ��@�\���J�����Ă���B
�����F����̗\��͊J���҂���̃��N�G�X�g�Ō��߂Ă����̂ł��傤���H
�N�[�����F���̂Ƃ���B�J���҂���̃t�B�[�h�o�b�N�ɂ͊ԈႢ�Ȃ����ڂ��Ă���B�Ⴆ�A�����̍u���Řb�����uImages API�v�͎��́A�J���҂���̃��N�G�X�g���ăO�[�O���J���҂�1�l��20�����[�����Ń{�����e�B�A�ŊJ�������B
�����ŁA�������͓����̗F�l��Twitter���g����GAE��ɍ�����uTagtter�v���N�[�������ɏЉ�A�����̗F�l����̎�����Ԃ����B
�����F���̗F�l����̎���ł��B�uGAE��Google Docs�Ƃ�Gmail�Ȃǂ̃T�[�r�X�Ƀ}�N���̂悤�Ȍ`�ŐV�����@�\��lj�����̂Ɏg����̂ł͂Ȃ��ł��傤���H�v
�N�[�����FGData�iGoogle Data API�j���g���A�\���낤�BGoogle Docs��Google Calendar�̃C���^�[�t�F�C�X�ƁA�������R�l�N�V�����Őڑ����ėL�p�����グ�邱�Ƃ��ł���Ǝv�����A����ɂ��Ă͂��������������K�v���낤�B
�����F�ނ������1�A��قǂ����Ă���HTTP�ȊO�̃v���g�R���ɂ��Ă̎��₪����܂��B�uHTTP�ł͂Ȃ��\�P�b�g�̂悤�Ȃ��̂��T�|�[�g���Ȃ��̂ł��傤���H�v
�N�[�����FPython�̕W�����C�u�����ɂ̓\�P�b�g�ʐM�͊O����Ă����ˁB����̓Z�L�����e�B���ӎ����ĊO�����̂����A���Ƃ��Ă�GAE�Ƀ\�P�b�g�ʐM�����Ж߂������ƍl���Ă��āA�Z�L���A�ł���Ȃ�����\�P�b�g�ʐM�������ł���悤�Ɍ����J�������B
�����F�ނ���u�t�@�C���̏������݂��ł���悤�ɂȂ�Ȃ��ł��傤���H�v�Ƃ������������܂����B
�N�[�����F�����A�������Ɍ��݂̓t�@�C���̏������݂͂ł��Ȃ����A�J���҂ɂ�GAE��DataStore API���g���ăf�[�^�̃p�[�V�X�e���X�i�i�����j��ێ�����悤�ɘb�����Ă���B��̓I�ɂ́A���Ȃ��̗F�l�͉������߂Ă���̂��낤���H
�����F�ނ������ɂ́A�u�傫�ȃf�[�^��GAE�̊O�ɃG�L�X�|�[�g�ł��Ȃ��̂ł��傤���H�v�ƁB
�N�[�����F�f�[�^���I�t���邱�Ƃ͂ł��邩������Ȃ��B�n���h���[�������Ă�����Ƃ�����Ă����B���N�G�X�g�𑗂��ăf�[�^��������Ă܂����N�G�X�g�𑗂�Ƃ�����������A���������Ƃ���ŁA�����ƌ�������K�v������B
�u���{�l�ɂ͒��N���G�C�e�B�u�ȃA�v�������҂��Ă���v
�����F�Ō�ɁA���{�̊J���҂�GAE�łǂ�ȃA�v���P�[�V����������Ăق����ł����H
�N�[�����F���낢��ȃA�v���P�[�V����������Ăق����Ǝv���Ă���B�n���͂���g���Ăق����B����GAE���g���Ă݂Ă��������B�����āA�t�B�[�h�o�b�N�₲�ӌ������肢���܂��B
�����F���{�l�Ȃ�ł͂̂��̂Ƃ����Ɖ����v��������܂����H �ق��̍��̐l�ɂ͂ł��Ȃ��悤�ȁB
�N�[�����F���{�͐��E�̒��ł��{���ɓ��̗ǂ��J���҂�����Ǝv���B���N���G�C�e�B�u�ȃA�v���P�[�V�������ɍl���Ă����Ɗ��҂��Ă���B�ǂ�Ȃ��̂����{�l�Ȃ�ł͂��ɂ��ẮA��̓I�ɂ͕�����Ȃ���B���߂�ˁi�j�B
�I�n�A�Ί�ŃC���^�r���[�ɉ����Ă��ꂽ�s�[�g�E�N�[������ |
�� �֘A�L��
- �O�[�O���A�uApp Engine�v�Ńf�U�C�i�[�ƊJ���҂̘A�g�_��
- �O�[�O���ƃA�}�]���̃N���E�h�̈Ⴂ
- �O�[�O�� �G���W�j�A�̂܂��߂ȓ���
- ������O�[�O���A�����Ȃ��O�[�O��
Google App Engine��Ajax�ւ̃n�[�h���������邩�H Ajax �������� Watch�i32�j�@Ajax�ɒ��킷��Ȃ�A���R�Ƀv���O���~���O�ł���T�[�o�����K�{�BGoogle App Engine�́A����ȃn�[�h������蕥���Ă����͂��ł��c�c �u���b�`�N���C�A���g �� ���[�v�t �H�[���� 2008/4/24 |
���b�`�N���C�A���g�����[ �S�L���ꗗ�� |
- GAS�Ŗ_�A�~�A�܂���ȂNJe��O���t���쐬�A�ύX�A�폜���邽�߂̊�{ �i2017/7/12�j
�@���������ۂɁA�u�O���t�v�͕K�v�s���ȑ��݂��B����́A�u�O���t�̐V�K�쐬�v�u�O���t�̕ύX�v�u�O���t�̍폜�v�ɂ��ĉ������ - GET�^POST�Ńt�H�[�����瑗�M���ꂽ�l��PHP�Ŏ��u��`�ς݂̕ϐ��v�y�X�V�z �i2017/7/10�j
�@HTML�̃t�H�[���@�\�ɂ��Ă����炢���Aget/post���\�b�h�Ȃǂ̓��e��A�z�z��Ŋi�[����PHP�́u��`�ς݂̕ϐ��v�̒��g��A�t�H�[�����M�l�̎�舵���ɂ����钍�ӓ_�ɂ��ĉ�����܂��yPHP 7.1�܂�2017�N�̏��ɍ����悤�ɍX�V�z - PHP��for�������[�v�E�o��break/�X�L�b�v��continue�y�X�V�z �i2017/6/26�j
�@�f������̃��W�b�N����break����continue���̗��_�Ǝg����������Bfor�����g�������[�v�����̊�{��while���Ƃ̈Ⴂ�A�������[�v�Ȃǂ������ďЉ�܂��yPHP 7.1�܂�2017�N�̏��ɍ����悤�ɍX�V�z - Spreadsheet�f�[�^�̑I���A�폜�A�}���A�R�s�[�A�ړ��A�\�[�g �i2017/6/12�j
�@Spreadsheet�f�[�^�̑I���A�}���A�폜�A�R�s�[�A�ړ��A�\�[�g�Ɏg�����\�b�h�̎g�����Ȃǂ��������
|
|