Files
discord-decomp/sources/modules/custom_status/native/EditCustomStatusWithPreview.tsx
T
2026-07-28 01:06:53 +03:00

456 lines
27 KiB
TypeScript

/* Metro module 8521; source: modules/custom_status/native/EditCustomStatusWithPreview.tsx; dependencies: [57, 31, 27, 1878, 8522, 661, 1881, 33, 4501, 697, 5278, 1244, 1305, 8523, 8524, 683, 6882, 566, 8525, 8526, 4002, 8528, 4570, 8529, 8690, 4015, 8691, 9603, 5282, 1599, 4573, 8852, 7980, 6231, 6238, 4080, 10501, 1962, 10503, 4071, 5080, 5176, 5280, 478, 2] */
import Module00057 from '../../../by-id/module-00057.js'; /* Metro dependency 57 */
import UserStore from '../../../stores/UserStore.tsx'; /* Metro dependency 1878 */
import ModalActionCreators from '../../../actions/ModalActionCreators.tsx'; /* Metro dependency 5080 */
import Module08523 from '../../../by-id/module-08523.js'; /* Metro dependency 8523 */
import ComputeInitialClearAfter from '../utils/computeInitialClearAfter.tsx'; /* Metro dependency 8525 */
import MaybeShowDiscardChangesAlert from '../../user_settings/profiles/native/maybeShowDiscardChangesAlert.tsx'; /* Metro dependency 8690 */
import * as FileImportTrackerModule from '../../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ReactNativeModule from '../../../by-id/module-00027-ReactNative.js'; /* Metro dependency 27 */
import * as ReactModule from '../../../by-id/module-00031-React.js'; /* Metro dependency 31 */
import * as ConstantsModule from '../../../Constants.tsx'; /* Metro dependency 661 */
import * as IndexNativeModule from '../../../intl/index.native.tsx'; /* Metro dependency 1244 */
import * as NativeModule from '../../../design/void/native.tsx'; /* Metro dependency 1305 */
import * as EmojiConstantsModule from '../../emojis/EmojiConstants.tsx'; /* Metro dependency 1881 */
import * as SharedModule from '../../../design/shared.tsx'; /* Metro dependency 4002 */
import * as SetAccessibilityFocusAndroidModule from '../../a11y/native/setAccessibilityFocus.android.tsx'; /* Metro dependency 4570 */
import * as TextModule from '../../../design/components/Text/native/Text.tsx'; /* Metro dependency 4573 */
import * as YouBarExperimentModule from '../../main_tabs_v2/YouBarExperiment.tsx'; /* Metro dependency 5176 */
import * as PressablesModule from '../../../design/void/Pressables/native/Pressables.tsx'; /* Metro dependency 5278 */
import * as NavigatorNativeModule from '../../../design/components/Navigator/native/Navigator.native.tsx'; /* Metro dependency 5280 */
import * as TableRowGroupNativeModule from '../../../design/components/TableRow/native/TableRowGroup.native.tsx'; /* Metro dependency 6231 */
import * as TableRowNativeModule from '../../../design/components/TableRow/native/TableRow.native.tsx'; /* Metro dependency 6238 */
import * as UserSettingToActivityModule from '../utils/userSettingToActivity.tsx'; /* Metro dependency 6882 */
import * as ConstantsModule2 from '../Constants.tsx'; /* Metro dependency 8522 */
import * as OpenEmojiPickerActionSheetModule from '../../emoji_picker/native/openEmojiPickerActionSheet.tsx'; /* Metro dependency 8529 */
import * as HeaderSharedModule from '../../main_tabs_v2/native/shared_components/HeaderShared.tsx'; /* Metro dependency 9603 */
function _fun67521(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#67521, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:6, offset: 0x01c2770f, size: 712 bytes, params: 8, frame: 25
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
let value = ConstantsModule;
const env0_8 = value.AnalyticEvents;
const env0_9 = value.AnalyticsSections;
const Fonts = value.Fonts;
const env0_10 = value.NOOP;
value = require(33) /* metro dependency 33 */;
const env0_12 = value.jsx;
const env0_13 = value.jsxs;
value = require(4501) /* metro dependency 4501: createStyles */;
const createStyles = value.createStyles;
object = {container: {'flexGrow': 1, 'padding': 16, 'rowGap': 24}};
object.statusSection = {rowGap: 8};
const object3 = {'flexDirection': 'column', 'rowGap': 4, 'backgroundColor': null, 'borderRadius': null,
'padding': 12};
const INPUT_BACKGROUND_DEFAULT = (importDefault(697) /* metro dependency 697: native */).colors.INPUT_BACKGROUND_DEFAULT;
object3.backgroundColor = INPUT_BACKGROUND_DEFAULT;
object3.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.lg;
object.statusInput = object3;
object.statusInputRow = {'flexDirection': 'row', 'alignItems': 'center'};
object.emoji = {marginRight: 8};
let TEXT_STRONG = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_STRONG;
object.status = {'color': null, 'lineHeight': 16, 'flexGrow': 1, 'alignSelf': 'flex-start', 'paddingVertical': 0,
'paddingHorizontal': 0, color: TEXT_STRONG};
const object6 = {'fontSize': 16, 'lineHeight': 20, 'fontFamily': null, 'color': null, 'flexGrow': 1,
'height': 'auto', 'textAlignVertical': 'center'};
const PRIMARY_MEDIUM = Fonts.PRIMARY_MEDIUM;
object6.fontFamily = PRIMARY_MEDIUM;
TEXT_STRONG = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_STRONG;
object6.color = TEXT_STRONG;
object.statusText = object6;
const TEXT_MUTED = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_MUTED;
object.inputPlaceholder = {color: TEXT_MUTED};
const object8 = {alignItems: 'center'};
const SHADOW_LOW = (importDefault(697) /* metro dependency 697: native */).shadows.SHADOW_LOW;
copyDataProperties(object8, SHADOW_LOW, undefined);
object.previewContainer = object8;
const INTERACTIVE_TEXT_DEFAULT = (importDefault(697) /* metro dependency 697: native */).colors.INTERACTIVE_TEXT_DEFAULT;
object.closeIcon = {tintColor: INTERACTIVE_TEXT_DEFAULT, flexShrink: 0};
object.statusSectionHeader = {'flexDirection': 'row', 'alignItems': 'center', 'justifyContent': 'space-between'};
const env0_14 = Reflect.apply(createStyles, value, [object]);
(FileImportTrackerModule).fileFinishedImporting('modules/custom_status/native/EditCustomStatusWithPreview.tsx');
exports.default = EditCustomStatusWithPreviewModal;
function ClearInputButton({onPress}) { // fn#67522, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:1176, offset: 0x01c279d7, size: 254 bytes, params: 2, frame: 22
const styles = useStyles();
const PressableOpacity = (PressablesModule).PressableOpacity;
const intl = (IndexNativeModule).intl;
const string = intl.string;
const VkKicb = (IndexNativeModule).t.VkKicb;
const Icon = (NativeModule).Icon;
const iconProps = {source: Module08523, style: styles.closeIcon};
const Icon2 = (NativeModule).Icon;
const Sizes = Icon2.Sizes;
const SMALL = Sizes.SMALL;
iconProps.size = SMALL;
return (
<PressableOpacity
style={{'borderRadius': 10, 'paddingLeft': 8}}
accessibilityRole="button"
accessibilityLabel={Reflect.apply(string, intl, [VkKicb])}
onPress={onPress}
hitSlop={{
'top': 8,
'bottom': 8,
'right': 8,
}}
>
<Icon {...iconProps} />
</PressableOpacity>
);
}
function EditCustomStatusWithPreview({navigation, onClose, analyticsLocations, prompt}) { // fn#67523, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:1523, offset: 0x01c27ad5, size: 2265 bytes, params: 2, frame: 55
var r30;
var r9;
var r0;
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
const t = (require(1244) /* metro dependency 1244: indexNative */).t;
var KeyboardAwareScrollView;
var items4;
const Text = (TextModule).Text;
var items2;
var PressableOpacity;
var object;
var items3;
var FormInput;
const TableRowGroup = (TableRowGroupNativeModule).TableRowGroup;
const TableRow = (TableRowNativeModule).TableRow;
var object2;
var value35;
let value = undefined;
let env0_4 = value;
let binding = env0_4;
const value5 = binding.useRef(prompt ?? (importDefault(8524) /* metro dependency 8524: getRandomCustomStatusPrompt */)());
const env0_3 = value5;
env0_4.useEffect(function() {
var defaultImport = importDefault(dependencyMap[15]);
var OPEN_MODAL = AnalyticEvents.OPEN_MODAL;
defaultImport.track(OPEN_MODAL, {type: AnalyticsSections.EDIT_CUSTOM_STATUS_MODAL_WITH_PREVIEW,
location_stack: analyticsLocations});
}, [analyticsLocations]);
const styles = useStyles();
const value6 = (UserSettingToActivityModule).useCustomStatusActivity();
const currentUser = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], function() {
return UserStore.getCurrentUser();
});
env0_4 = currentUser;
const value7 = (ComputeInitialClearAfter)();
binding = env0_4;
let useState = binding.useState;
const state = value6 == null ? value : value6.state;
const value8 = '';
const value10 = env0_3(Reflect.apply(useState, binding, [state ?? value8]), 2);
const property = value10[0];
const property2 = value10[1];
binding = env0_4;
useState = binding.useState;
const value12 = env0_3(Reflect.apply(useState, binding, [(value6 == null ? value : value6.emoji) ?? null]), 2);
const property3 = value12[0];
const property4 = value12[1];
const [property5, env0_10] = env0_3(env0_4.useState(value7), 2);
const r40 = value5.current != null ? value5.current.label() : intl.string((require(1244) /* metro dependency 1244: indexNative */).t.xod367);
const value17 = env0_4.useCallback(_fun67526, [property, property3, property5, onClose, analyticsLocations]);
const value18 = env0_4.useCallback(function() {
importDefault(dependencyMap[21])();
var AccessibilityAnnouncer = require(dependencyMap[20]).AccessibilityAnnouncer;
AccessibilityAnnouncer.announce(require(dependencyMap[11]).intl.string(require(dependencyMap[11]).t.YdUwBS));
onClose();
}, [onClose]);
const value19 = env0_4.useRef(null);
const value20 = env0_4.useCallback(_fun67528, []);
const value22 = env0_4.useCallback(_fun67530, [env0_4.useCallback(_fun67529, [value20]), value20]);
const value23 = env0_4.useCallback(_fun67531, [property4, property2]);
const value24 = env0_4.useRef(null);
const value25 = env0_4.useCallback(_fun67532, []);
const env0_17 = env0_4.useRef({statusText: property, statusEmoji: property3, clearAfter: property5});
const value26 = env0_4.useMemo(_fun67533, [property, property3, property5]);
const value27 = env0_4.useCallback(_fun67534, [value26, onClose]);
const value28 = env0_4.useMemo(_fun67535, [currentUser, property, property3, r40]);
env0_4.useLayoutEffect(_fun67536, [navigation, value17, value26, value27]);
if (currentUser == null) {
r0 = null;
} else {
KeyboardAwareScrollView = (require(1599) /* metro dependency 1599 */).KeyboardAwareScrollView;
var viewBindingProps = {style: styles.container};
items4 = [
<View style={styles.previewContainer}>
{value28}
</View>,
];
var viewBinding3Props = {style: styles.statusSection};
items2 = [
<View style={styles.statusSectionHeader}>
<Text
accessibilityRole="header"
variant="text-sm/semibold"
color="text-default"
>
{intl.string(t.zOdg0A)}
</Text>
</View>,
];
var viewBinding5Props = {style: styles.statusInput};
var viewBinding6Props = {style: styles.statusInputRow};
PressableOpacity = (require(5278) /* metro dependency 5278: Pressables */).PressableOpacity;
items3 = [
<PressableOpacity
ref={value19}
accessibilityLabel={intl.string(t.WkfRZP)}
accessibilityValue={{text: property3 == null ? value : property3.name}}
accessibilityRole="button"
onPress={value22}
>
{((Component) => <Component emoji={property3} size={20} style={styles.emoji} withPlaceholder />)(importDefault(8852) /* metro dependency 8852: ActivityEmoji */)}
</PressableOpacity>,
];
FormInput = importDefault(7980) /* metro dependency 7980: FormInput */;
items3[1] = (
<FormInput
ref={value24}
maxLength={STATUS_MAX_LENGTH}
placeholder={r40}
placeholderTextColor={styles.inputPlaceholder.color}
accessibilityLabel={intl.string(t.xalUlT)}
onSubmitEditing={value25}
style={styles.status}
value={property}
onChange={property2}
autoCorrect={false}
showBorder={false}
showTopContainer={false}
autoCapitalize="none"
inputTextStyle={styles.statusText}
multiline
submitBehavior="blurAndSubmit"
returnKeyType="done"
autoFocus
/>
);
r30 = property3 != null || value8 !== property;
r30 = r30 && <ClearInputButton onPress={value23} />;
items3[2] = r30;
items2[1] = (
<View {...viewBinding5Props}>
<View {...viewBinding6Props}>
{items3}
</View>
</View>
);
items4[1] = (
<View {...viewBinding3Props}>
{items2}
</View>
);
items4[2] = (
<TableRowGroup hasIcons={false}>
<TableRow
label={intl.string(t['+14vvU'])}
arrow
onPress={onPress_67538}
trailing={<Text variant="text-sm/medium">
{(importDefault(10503) /* metro dependency 10503: formatClearAfterValue */)(property5)}
</Text>}
/>
</TableRowGroup>
);
value35 = value6 != null;
if (value35) {
r9 = (
<TableRowGroup hasIcons>
<TableRow
icon={((TrashIcon) => <TrashIcon color={(importDefault(697) /* metro dependency 697: native */).colors.TEXT_FEEDBACK_CRITICAL} />)((require(4071) /* metro dependency 4071: TrashIcon */).TrashIcon)}
label={intl.string((require(1244) /* metro dependency 1244: indexNative */).t.wO53tu)}
onPress={value18}
variant="danger"
/>
</TableRowGroup>
);
} else {
r9 = value35;
}
items4[3] = r9;
value = (
<KeyboardAwareScrollView keyboardShouldPersistTaps="always">
<View {...viewBindingProps}>
{items4}
</View>
</KeyboardAwareScrollView>
);
r0 = value;
}
return r0;
function _fun67526() { // fn#67526, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:2179, offset: 0x01c283fa, size: 194 bytes, params: 1, frame: 17
const value2 = undefined;
(importDefault(8526) /* metro dependency 8526: setCustomStatus */)({text: ReactNativeModule.View, emojiInfo: ConstantsModule2.STATUS_MAX_LENGTH,
clearAfter: env0_9, analyticsLocations: analyticsLocations, prompt: env0_3.current ?? value2});
const AccessibilityAnnouncer = (SharedModule).AccessibilityAnnouncer;
const announce = AccessibilityAnnouncer.announce;
const intl = (IndexNativeModule).intl;
const string = intl.string;
const Og40Yn = (IndexNativeModule).t.Og40Yn;
Reflect.apply(announce, AccessibilityAnnouncer, [Reflect.apply(string, intl, [Og40Yn])]);
onClose();
return value2;
}
function _fun67528() { // fn#67528, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:2552, offset: 0x01c28538, size: 62 bytes, params: 1, frame: 13
const value = environment.__proto__;
(SetAccessibilityFocusAndroidModule).setAccessibilityFocus({ref: env0_13,
delay: 500});
}
function _fun67529(a0) { // fn#67529, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:2630, offset: 0x01c28576, size: 112 bytes, params: 2, frame: 15
env0_8({id: a0.id,
name: a0.id != null || a0.surrogates == null ? a0.name ?? '' : a0.surrogates !== '' ? a0.surrogates : a0.name ?? '',
animated: a0.animated});
env0_14();
}
function _fun67530() { // fn#67530, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:2791, offset: 0x01c285e6, size: 76 bytes, params: 1, frame: 15
const openEmojiPickerActionSheet = OpenEmojiPickerActionSheetModule.openEmojiPickerActionSheet;
const STATUS = EmojiIntention.STATUS;
Reflect.apply(openEmojiPickerActionSheet, OpenEmojiPickerActionSheetModule, [{onPressEmoji: env0_15,
onClose: env0_14, pickerIntention: STATUS}]);
}
function _fun67531() { // fn#67531, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:2911, offset: 0x01c28632, size: 31 bytes, params: 1, frame: 12
env0_8(null);
env0_6('');
}
function _fun67532() { // fn#67532, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:2973, offset: 0x01c28651, size: 32 bytes, params: 1, frame: 9
const current = env0_16.current;
if (current != null) {
current.blur();
}
}
function _fun67533() { // fn#67533, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:3087, offset: 0x01c28671, size: 80 bytes, params: 1, frame: 4
let r0 = ReactNativeModule.View !== env0_17.current.statusText || ConstantsModule2.STATUS_MAX_LENGTH !== env0_17.current.statusEmoji;
r0 = !r0 ? env0_9 !== env0_17.current.clearAfter : r0;
return r0;
}
function _fun67534() { // fn#67534, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:3197, offset: 0x01c286c1, size: 91 bytes, params: 1, frame: 16
const defaultImport = MaybeShowDiscardChangesAlert;
const object = {};
object.hasEdits = env0_18;
object.onHasEdits = (require(4015) /* metro dependency 4015: ChatInputUtils */).dismissKeyboard;
object.resetPending = NOOP;
object.onConfirm = onClose;
defaultImport(object);
}
function _fun67535() { // fn#67535, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:3311, offset: 0x01c2871c, size: 90 bytes, params: 1, frame: 16
const currentUserBinding = currentUser;
const value2 = null;
return (
value2 != currentUserBinding
? ((Component) => <Component user={currentUser} pendingStatusText={ReactNativeModule.View} pendingStatusEmoji={ConstantsModule2.STATUS_MAX_LENGTH} placeholderText={EmojiConstantsModule.EmojiIntention} />)(importDefault(8691) /* metro dependency 8691: CustomStatusPreview */)
: value2
);
}
function _fun67536() { // fn#67536, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:3446, offset: 0x01c28776, size: 81 bytes, params: 1, frame: 15
const navigationBinding = navigation;
const setOptions = navigationBinding.setOptions;
const object = {headerRight: headerRight_67537};
object.headerLeft = (require(5282) /* metro dependency 5282: NavigatorHeaderNative */).getHeaderCloseButton(env0_19);
Reflect.apply(setOptions, navigationBinding, [object]);
function headerRight_67537() { // fn#67537, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:3477, offset: 0x01c287c7, size: 118 bytes, params: 1, frame: 18
const HeaderTextButton = (HeaderSharedModule).HeaderTextButton;
const intl = (IndexNativeModule).intl;
return (
<HeaderTextButton
label={intl.string((IndexNativeModule).t['R3BPH+'])}
onPress={env1_12}
disabled={!env1_18}
/>
);
}
}
function EditCustomStatusWithPreviewOnPress() { // fn#67538, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:4936, owner: EditCustomStatusWithPreview.onPress, offset: 0x01c2883d, size: 125 bytes, params: 1, frame: 17
let value = environment.__proto__;
require(dependencyMap[25]).dismissKeyboard();
value = importDefault(dependencyMap[35]);
value.openLazy(require(dependencyMap[37])(dependencyMap[36], dependencyMap.paths), 'ClearAfterOptionsActionSheet',
{initialValue: env0_9, onChange: env0_10});
}
}
function EditCustomStatusWithPreviewModal({analyticsLocations, prompt}) { // fn#67539, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:5486, offset: 0x01c288ba, size: 252 bytes, params: 2, frame: 19
var r4;
var moduleValue2;
var value;
const value2 = ReactModule.useMemo(function() {
return _fun67541(analyticsLocations, prompt);
}, [analyticsLocations, prompt]);
const value4 = (YouBarExperimentModule).useYouBarEnabled('EditCustomStatusWithPreviewModal');
const Navigator = (NavigatorNativeModule).Navigator;
object = {initialRouteName: 'root', screens: value2};
if (value4) {
moduleValue2 = require(478) /* metro dependency 478: PlatformUtils */;
r4 = moduleValue2.isAndroid() ? undefined : 12;
} else {
r4 = undefined;
}
object.headerStatusBarHeight = r4;
if (value4) {
value = require(478) /* metro dependency 478: PlatformUtils */;
r4 = value.isAndroid() ? undefined : {height: 56};
} else {
r4 = undefined;
}
object.headerStyle = r4;
return <Navigator {...object} />;
function _fun67540() { // fn#67540, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:5578, offset: 0x01c289b6, size: 30 bytes, params: 1, frame: 13
return _fun67541(analyticsLocations, prompt);
function _fun67541(a0, a1) { // fn#67541, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:5583, offset: 0x01c289d4, size: 172 bytes, params: 3, frame: 18
const env0_0 = a0;
const env0_1 = a1;
const object2 = {};
const intl = (IndexNativeModule).intl;
const string = intl.string;
const Iuzg8R = (IndexNativeModule).t.Iuzg8R;
object2.title = Reflect.apply(string, intl, [Iuzg8R]);
object2.headerTitle = headerTitle_67542;
object2.headerLeft = (require(5282) /* metro dependency 5282: NavigatorHeaderNative */).getHeaderCloseButton((importDefault(5080) /* metro dependency 5080: ModalActionCreators */).pop);
object2.ignoreKeyboard = true;
object2.render = render_67543;
return {root: object2};
function headerTitle_67542() { // fn#67542, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:5656, offset: 0x01c28a80, size: 96 bytes, params: 1, frame: 18
const GenericHeaderTitle = (HeaderSharedModule).GenericHeaderTitle;
const intl = (IndexNativeModule).intl;
const string = intl.string;
const Iuzg8R = (IndexNativeModule).t.Iuzg8R;
return <GenericHeaderTitle title={Reflect.apply(string, intl, [Iuzg8R])} />;
}
function render_67543(a0, a1) { // fn#67543, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8706:5819, offset: 0x01c28ae0, size: 83 bytes, params: 3, frame: 15
return (
<EditCustomStatusWithPreview
navigation={a1}
onClose={(ModalActionCreators).pop}
analyticsLocations={env0_0}
prompt={require}
/>
);
}
}
}
}
}
global.__d(_fun67521, 8521, [57, 31, 27, 1878, 8522, 661, 1881, 33, 4501, 697, 5278, 1244, 1305, 8523, 8524, 683,
6882, 566, 8525, 8526, 4002, 8528, 4570, 8529, 8690, 4015, 8691, 9603, 5282, 1599, 4573, 8852, 7980, 6231, 6238,
4080, 10501, 1962, 10503, 4071, 5080, 5176, 5280, 478,
2]) /* metro module 8521, dependencies: [57, 31, 27, 1878, 8522, 661, 1881, 33, 4501, 697, 5278, 1244, 1305, 8523, 8524, 683, 6882, 566, 8525, 8526, 4002, 8528, 4570, 8529, 8690, 4015, 8691, 9603, 5282, 1599, 4573, 8852, 7980, 6231, 6238, 4080, 10501, 1962, 10503, 4071, 5080, 5176, 5280, 478, 2] */;