/frameworks/base/services/core/java/com/android/server/pm/parsing/pkg/ |
D | AndroidPackageUtils.java | 17 package com.android.server.pm.parsing.pkg; 35 import com.android.server.pm.pkg.AndroidPackage; 36 import com.android.server.pm.pkg.PackageState; 37 import com.android.server.pm.pkg.PackageStateInternal; 38 import com.android.server.pm.pkg.component.ParsedActivity; 39 import com.android.server.pm.pkg.component.ParsedInstrumentation; 40 import com.android.server.pm.pkg.component.ParsedProvider; 41 import com.android.server.pm.pkg.component.ParsedService; 42 import com.android.server.pm.pkg.parsing.ParsingPackageHidden; 60 PackageImpl pkg = (PackageImpl) aPkg; in getAllCodePathsExcludingResourceOnly() local [all …]
|
/frameworks/base/packages/SystemUI/src/com/android/systemui/ |
D | ForegroundServicesUserState.java | 48 public void addOp(String pkg, int op) { in addOp() argument 49 if (mAppOps.get(pkg) == null) { in addOp() 50 mAppOps.put(pkg, new ArraySet<>(3)); in addOp() 52 mAppOps.get(pkg).add(op); in addOp() 55 public boolean removeOp(String pkg, int op) { in removeOp() argument 57 final ArraySet<Integer> keys = mAppOps.get(pkg); in removeOp() 63 mAppOps.remove(pkg); in removeOp() 69 public void addImportantNotification(String pkg, String key) { in addImportantNotification() argument 70 addNotification(mImportantNotifications, pkg, key); in addImportantNotification() 73 public boolean removeImportantNotification(String pkg, String key) { in removeImportantNotification() argument [all …]
|
/frameworks/base/services/core/java/com/android/server/pm/parsing/ |
D | PackageInfoUtils.java | 57 import com.android.server.pm.parsing.pkg.AndroidPackageUtils; 58 import com.android.server.pm.parsing.pkg.PackageImpl; 59 import com.android.server.pm.pkg.AndroidPackage; 60 import com.android.server.pm.pkg.PackageStateInternal; 61 import com.android.server.pm.pkg.PackageStateUnserialized; 62 import com.android.server.pm.pkg.PackageUserState; 63 import com.android.server.pm.pkg.PackageUserStateInternal; 64 import com.android.server.pm.pkg.PackageUserStateUtils; 65 import com.android.server.pm.pkg.SELinuxUtil; 66 import com.android.server.pm.pkg.component.ComponentParseUtils; [all …]
|
/frameworks/base/core/java/android/app/ |
D | INotificationManager.aidl | 48 void cancelAllNotifications(String pkg, int userId); in cancelAllNotifications() argument 50 void clearData(String pkg, int uid, boolean fromApp); in clearData() argument 51 …void enqueueTextToast(String pkg, IBinder token, CharSequence text, int duration, boolean isUiCont… in enqueueTextToast() argument 52 …void enqueueToast(String pkg, IBinder token, ITransientNotification callback, int duration, boolea… in enqueueToast() argument 53 void cancelToast(String pkg, IBinder token); in cancelToast() argument 54 void finishToken(String pkg, IBinder token); in finishToken() argument 56 void enqueueNotificationWithTag(String pkg, String opPkg, String tag, int id, in enqueueNotificationWithTag() argument 59 void cancelNotificationWithTag(String pkg, String opPkg, String tag, int id, int userId); in cancelNotificationWithTag() argument 61 boolean isInCall(String pkg, int uid); in isInCall() argument 62 void setShowBadge(String pkg, int uid, boolean showBadge); in setShowBadge() argument [all …]
|
/frameworks/base/services/core/java/com/android/server/pm/ |
D | AppDataHelper.java | 51 import com.android.server.pm.parsing.pkg.AndroidPackageUtils; 52 import com.android.server.pm.pkg.AndroidPackage; 53 import com.android.server.pm.pkg.PackageState; 54 import com.android.server.pm.pkg.PackageStateInternal; 55 import com.android.server.pm.pkg.SELinuxUtil; 96 public void prepareAppDataAfterInstallLIF(AndroidPackage pkg) { in prepareAppDataAfterInstallLIF() argument 97 prepareAppDataPostCommitLIF(pkg, 0 /* previousAppId */); in prepareAppDataAfterInstallLIF() 106 public void prepareAppDataPostCommitLIF(AndroidPackage pkg, int previousAppId) { in prepareAppDataPostCommitLIF() argument 109 ps = mPm.mSettings.getPackageLPr(pkg.getPackageName()); in prepareAppDataPostCommitLIF() 114 if (!shouldHaveAppStorage(pkg)) { in prepareAppDataPostCommitLIF() [all …]
|
D | SharedLibrariesImpl.java | 51 import com.android.server.pm.parsing.pkg.AndroidPackageUtils; 52 import com.android.server.pm.parsing.pkg.ParsedPackage; 53 import com.android.server.pm.pkg.AndroidPackage; 54 import com.android.server.pm.pkg.PackageStateInternal; 388 @Nullable SharedLibraryInfo getLatestStaticSharedLibraVersion(@NonNull AndroidPackage pkg) { 390 return getLatestStaticSharedLibraVersionLPr(pkg); 402 private SharedLibraryInfo getLatestStaticSharedLibraVersionLPr(@NonNull AndroidPackage pkg) { 404 pkg.getStaticSharedLibraryName()); 412 if (libVersion < pkg.getStaticSharedLibraryVersion()) { 455 @NonNull AndroidPackage pkg, @Nullable SharedLibraryInfo libInfo, [all …]
|
D | KeySetManagerService.java | 33 import com.android.server.pm.pkg.AndroidPackage; 34 import com.android.server.pm.pkg.PackageStateInternal; 35 import com.android.server.pm.pkg.SharedUserApi; 148 PackageSetting pkg = mPackages.get(packageName); in packageIsSignedByLPr() local 149 if (pkg == null) { in packageIsSignedByLPr() 152 if (pkg.getKeySetData() == null) { in packageIsSignedByLPr() 159 ArraySet<Long> pkgKeys = mKeySetMapping.get(pkg.getKeySetData().getProperSigningKeySet()); in packageIsSignedByLPr() 174 PackageSetting pkg = mPackages.get(packageName); in packageIsSignedByExactlyLPr() local 175 if (pkg == null) { in packageIsSignedByExactlyLPr() 178 if (pkg.getKeySetData() == null in packageIsSignedByExactlyLPr() [all …]
|
/frameworks/base/services/core/java/com/android/server/pm/pkg/parsing/ |
D | ParsingPackageUtils.java | 17 package com.android.server.pm.pkg.parsing; 32 import static com.android.server.pm.pkg.parsing.ParsingUtils.parseKnownActivityEmbeddingCerts; 94 import com.android.server.pm.parsing.pkg.PackageImpl; 95 import com.android.server.pm.parsing.pkg.ParsedPackage; 97 import com.android.server.pm.pkg.component.ComponentMutateUtils; 98 import com.android.server.pm.pkg.component.ComponentParseUtils; 99 import com.android.server.pm.pkg.component.InstallConstraintsTagParser; 100 import com.android.server.pm.pkg.component.ParsedActivity; 101 import com.android.server.pm.pkg.component.ParsedActivityUtils; 102 import com.android.server.pm.pkg.component.ParsedApexSystemService; [all …]
|
/frameworks/base/cmds/incidentd/src/ |
D | Broadcaster.cpp | 57 pkg(), in ReportId() 63 pkg(that.pkg), in ReportId() 69 pkg(p), in ReportId() 83 if (pkg < that.pkg) { in operator <() 86 if (pkg > that.pkg) { in operator <() 129 void Broadcaster::clearBroadcasts(const string& pkg, const string& cls, const string& id) { in clearBroadcasts() argument 132 map<ReportId,ReportStatus>::const_iterator found = mHistory.find(ReportId(id, pkg, cls)); in clearBroadcasts() 144 void Broadcaster::clearPackageBroadcasts(const string& pkg) { in clearPackageBroadcasts() argument 149 if (it->first.pkg == pkg) { in clearPackageBroadcasts() 205 if (!was_ready_sent(file->getId(), report.pkg(), report.cls())) { in sendBroadcasts() [all …]
|
/frameworks/base/services/tests/servicestests/src/com/android/server/pm/dex/ |
D | DexMetadataHelperTest.java | 42 import com.android.server.pm.parsing.pkg.AndroidPackageUtils; 43 import com.android.server.pm.parsing.pkg.ParsedPackage; 44 import com.android.server.pm.pkg.AndroidPackage; 140 private static void validatePackageDexMetadata(AndroidPackage pkg, boolean requireManifest) in validatePackageDexMetadata() argument 143 AndroidPackageUtils.getPackageDexMetadata(pkg).values(); in validatePackageDexMetadata() 144 String packageName = pkg.getPackageName(); in validatePackageDexMetadata() 145 long versionCode = pkg.getLongVersionCode(); in validatePackageDexMetadata() 157 private static void validatePackageDexMetatadataVaryingRequireManifest(ParsedPackage pkg) in validatePackageDexMetatadataVaryingRequireManifest() argument 159 validatePackageDexMetadata(pkg, /*requireManifest=*/true); in validatePackageDexMetatadataVaryingRequireManifest() 160 validatePackageDexMetadata(pkg, /*requireManifest=*/false); in validatePackageDexMetatadataVaryingRequireManifest() [all …]
|
/frameworks/base/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/pkg/ |
D | PackageStateTest.kt | 17 package com.android.server.pm.test.pkg 29 import com.android.server.pm.parsing.pkg.PackageImpl 30 import com.android.server.pm.pkg.AndroidPackage 31 import com.android.server.pm.pkg.PackageState 32 import com.android.server.pm.pkg.PackageStateImpl 33 import com.android.server.pm.pkg.PackageUserState 34 import com.android.server.pm.pkg.PackageUserStateImpl 35 import com.android.server.pm.pkg.component.ParsedActivity 36 import com.android.server.pm.pkg.component.ParsedActivityImpl 37 import com.android.server.pm.pkg.component.ParsedComponentImpl [all …]
|
/frameworks/base/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/ |
D | DomainVerificationCollectorTest.kt | 26 import com.android.server.pm.parsing.pkg.AndroidPackageInternal 27 import com.android.server.pm.pkg.AndroidPackage 28 import com.android.server.pm.pkg.component.ParsedActivityImpl 29 import com.android.server.pm.pkg.component.ParsedIntentInfoImpl 57 val pkg = mockPkg(useV2 = false, autoVerify = true) in verifyV1() constant 59 assertThat(collector.collectAllWebDomains(pkg)) in verifyV1() 61 assertThat(collector.collectValidAutoVerifyDomains(pkg)) in verifyV1() 63 assertThat(collector.collectInvalidAutoVerifyDomains(pkg)) in verifyV1() 69 val pkg = mockPkg(useV2 = false, autoVerify = false) in verifyV1NoAutoVerify() constant 71 assertThat(collector.collectAllWebDomains(pkg)) in verifyV1NoAutoVerify() [all …]
|
/frameworks/base/services/core/java/com/android/server/slice/ |
D | SliceManagerService.java | 145 public Uri[] getPinnedSlices(String pkg) { in getPinnedSlices() argument 146 verifyCaller(pkg); in getPinnedSlices() 151 if (Objects.equals(pkg, state.getPkg())) { in getPinnedSlices() 164 public void pinSlice(String pkg, Uri uri, SliceSpec[] specs, IBinder token) in pinSlice() argument 166 verifyCaller(pkg); in pinSlice() 167 enforceAccess(pkg, uri); in pinSlice() 171 getOrCreatePinnedSlice(uri, slicePkg).pin(pkg, specs, token); in pinSlice() 174 if (slicePkg != null && !Objects.equals(pkg, slicePkg)) { in pinSlice() 176 isAssistant(pkg, user) || isDefaultHomeApp(pkg, user) in pinSlice() 183 public void unpinSlice(String pkg, Uri uri, IBinder token) throws RemoteException { in unpinSlice() argument [all …]
|
/frameworks/base/core/tests/overlaytests/host/src/com/android/server/om/hosttest/ |
D | InstallOverlayTests.java | 50 for (String pkg : ALL_PACKAGES) { in ensureNoOverlays() 51 assertFalse(pkg + " should not be installed", isPackageInstalled(pkg)); in ensureNoOverlays() 52 assertFalse(pkg + " should not be registered with overlay manager service", in ensureNoOverlays() 53 overlayManagerContainsPackage(pkg)); in ensureNoOverlays() 64 for (String pkg : ALL_PACKAGES) { in uninstallOverlays() 65 uninstallPackage(pkg); in uninstallOverlays() 199 private void installPackage(String pkg) throws Exception { in installPackage() argument 200 super.installPackage(pkg); in installPackage() 204 private void installInstantPackage(String pkg) throws Exception { in installInstantPackage() argument 205 super.installPackage(pkg, "--instant"); in installInstantPackage() [all …]
|
/frameworks/base/services/tests/servicestests/src/com/android/server/om/ |
D | OverlayManagerServiceImplTestsBase.java | 42 import com.android.server.pm.pkg.AndroidPackage; 43 import com.android.server.pm.pkg.AndroidPackageSplit; 44 import com.android.server.pm.pkg.PackageState; 140 void addPackage(FakeDeviceState.PackageBuilder pkg, int userId) { in addPackage() argument 141 mState.add(pkg, userId); in addPackage() 170 void installAndAssert(@NonNull FakeDeviceState.PackageBuilder pkg, int userId, in installAndAssert() argument 173 if (mState.select(pkg.packageName, userId) != null) { in installAndAssert() 174 throw new IllegalStateException("package " + pkg.packageName + " already installed"); in installAndAssert() 176 mState.add(pkg, userId); in installAndAssert() 177 assertEquals(onAddedUpdatedPackages, mImpl.onPackageAdded(pkg.packageName, userId)); in installAndAssert() [all …]
|
/frameworks/base/packages/SettingsLib/src/com/android/settingslib/fuelgauge/ |
D | PowerAllowlistBackend.java | 80 public boolean isSysAllowlisted(String pkg) { in isSysAllowlisted() argument 81 return mSysAllowlistedApps.contains(pkg); in isSysAllowlisted() 87 public boolean isAllowlisted(String pkg, int uid) { in isAllowlisted() argument 88 if (mAllowlistedApps.contains(pkg)) { in isAllowlisted() 92 if (isDefaultActiveApp(pkg, uid)) { in isAllowlisted() 102 public boolean isDefaultActiveApp(String pkg, int uid) { in isDefaultActiveApp() argument 107 if (mDefaultActiveApps.contains(pkg)) { in isDefaultActiveApp() 113 if (devicePolicyManager.packageHasActiveAdmins(pkg)) { in isDefaultActiveApp() 119 AppOpsManager.OP_SYSTEM_EXEMPT_FROM_POWER_RESTRICTIONS, uid, pkg) in isDefaultActiveApp() 137 public boolean isAllowlistedExceptIdle(String pkg) { in isAllowlistedExceptIdle() argument [all …]
|
/frameworks/libs/modules-utils/java/com/android/modules/utils/pm/ |
D | PackageStateModulesUtils.java | 25 import com.android.server.pm.pkg.AndroidPackageSplit; 26 import com.android.server.pm.pkg.PackageState; 43 var pkg = packageState.getAndroidPackage(); in isDexoptable() local 44 if (pkg == null) { in isDexoptable() 48 List<AndroidPackageSplit> splits = pkg.getSplits(); in isDexoptable() 70 var pkg = packageState.getAndroidPackage(); in isLoadableInOtherProcesses() local 71 if (pkg == null) { in isLoadableInOtherProcesses() 75 if (!pkg.getLibraryNames().isEmpty()) { in isLoadableInOtherProcesses() 79 if (!TextUtils.isEmpty(pkg.getSdkLibraryName())) { in isLoadableInOtherProcesses() 83 if (!TextUtils.isEmpty(pkg.getStaticSharedLibraryName())) { in isLoadableInOtherProcesses() [all …]
|
/frameworks/base/services/core/java/com/android/server/notification/ |
D | NotificationManagerInternal.java | 26 NotificationChannel getNotificationChannel(String pkg, int uid, String channelId); in getNotificationChannel() argument 27 NotificationChannelGroup getNotificationChannelGroup(String pkg, int uid, String channelId); in getNotificationChannelGroup() argument 28 void enqueueNotification(String pkg, String basePkg, int callingUid, int callingPid, in enqueueNotification() argument 30 void enqueueNotification(String pkg, String basePkg, int callingUid, int callingPid, in enqueueNotification() argument 33 void cancelNotification(String pkg, String basePkg, int callingUid, int callingPid, in cancelNotification() argument 37 boolean isNotificationShown(String pkg, String tag, int notificationId, int userId); in isNotificationShown() argument 39 void removeForegroundServiceFlagFromNotification(String pkg, int notificationId, int userId); in removeForegroundServiceFlagFromNotification() argument 41 void removeUserInitiatedJobFlagFromNotification(String pkg, int notificationId, int userId); in removeUserInitiatedJobFlagFromNotification() argument 43 void onConversationRemoved(String pkg, int uid, Set<String> shortcuts); in onConversationRemoved() argument 46 int getNumNotificationChannelsForPackage(String pkg, int uid, boolean includeDeleted); in getNumNotificationChannelsForPackage() argument [all …]
|
D | RankingConfig.java | 39 Collection<NotificationChannelGroup> getNotificationChannelGroups(String pkg, in getNotificationChannelGroups() argument 41 void createNotificationChannelGroup(String pkg, int uid, NotificationChannelGroup group, in createNotificationChannelGroup() argument 43 ParceledListSlice<NotificationChannelGroup> getNotificationChannelGroups(String pkg, in getNotificationChannelGroups() argument 45 boolean createNotificationChannel(String pkg, int uid, NotificationChannel channel, in createNotificationChannel() argument 48 void updateNotificationChannel(String pkg, int uid, NotificationChannel updatedChannel, in updateNotificationChannel() argument 50 NotificationChannel getNotificationChannel(String pkg, int uid, String channelId, in getNotificationChannel() argument 52 NotificationChannel getConversationNotificationChannel(String pkg, int uid, String channelId, in getConversationNotificationChannel() argument 55 boolean deleteNotificationChannel(String pkg, int uid, String channelId, in deleteNotificationChannel() argument 57 void permanentlyDeleteNotificationChannel(String pkg, int uid, String channelId); in permanentlyDeleteNotificationChannel() argument 58 void permanentlyDeleteNotificationChannels(String pkg, int uid); in permanentlyDeleteNotificationChannels() argument [all …]
|
/frameworks/base/services/core/java/com/android/server/pm/dex/ |
D | ArtUtils.java | 24 import com.android.server.pm.parsing.pkg.AndroidPackageUtils; 25 import com.android.server.pm.pkg.AndroidPackage; 26 import com.android.server.pm.pkg.PackageState; 42 AndroidPackage pkg, PackageState packageState) { in createArtPackageInfo() argument 44 pkg.getPackageName(), in createArtPackageInfo() 47 AndroidPackageUtils.getAllCodePaths(pkg), in createArtPackageInfo() 48 getOatDir(pkg, packageState)); in createArtPackageInfo() 51 private static String getOatDir(AndroidPackage pkg, @NonNull PackageState packageState) { in getOatDir() argument 52 if (!AndroidPackageUtils.canHaveOatDir(packageState, pkg)) { in getOatDir() 55 File codePath = new File(pkg.getPath()); in getOatDir()
|
/frameworks/base/services/core/java/com/android/server/incident/ |
D | IncidentCompanionService.java | 123 public void sendReportReadyBroadcast(String pkg, String cls) { in sendReportReadyBroadcast() argument 137 intent.setComponent(new ComponentName(pkg, cls)); in sendReportReadyBroadcast() 195 public List<String> getIncidentReportList(String pkg, String cls) throws RemoteException { in getIncidentReportList() argument 200 return getIIncidentManager().getIncidentReportList(pkg, cls); in getIncidentReportList() 210 public void deleteIncidentReports(String pkg, String cls, String id) in deleteIncidentReports() argument 212 if (pkg == null || cls == null || id == null in deleteIncidentReports() 213 || pkg.length() == 0 || cls.length() == 0 || id.length() == 0) { in deleteIncidentReports() 216 enforceAccessReportsPermissions(pkg); in deleteIncidentReports() 220 getIIncidentManager().deleteIncidentReports(pkg, cls, id); in deleteIncidentReports() 230 public void deleteAllIncidentReports(String pkg) throws RemoteException { in deleteAllIncidentReports() argument [all …]
|
/frameworks/base/services/core/java/com/android/server/pm/pkg/component/ |
D | ComponentParseUtils.java | 17 package com.android.server.pm.pkg.component; 32 import com.android.server.pm.pkg.PackageUserState; 33 import com.android.server.pm.pkg.PackageUserStateUtils; 34 import com.android.server.pm.pkg.parsing.ParsingPackage; 35 import com.android.server.pm.pkg.parsing.ParsingPackageUtils; 36 import com.android.server.pm.pkg.parsing.ParsingUtils; 57 ParsingPackage pkg, Resources res, XmlResourceParser parser, String tag, in parseAllMetaData() argument 69 result = ParsedComponentUtils.addMetaData(component, pkg, res, parser, input); in parseAllMetaData() 71 result = ParsingUtils.unknownTag(tag, pkg, parser, input); in parseAllMetaData() 83 public static ParseResult<String> buildProcessName(@NonNull String pkg, String defProc, in buildProcessName() argument [all …]
|
/frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/ |
D | GroupHelperTest.java | 74 private StatusBarNotification getSbn(String pkg, int id, String tag, in getSbn() argument 82 return new StatusBarNotification(pkg, pkg, id, tag, 0, 0, nb.build(), user, null, in getSbn() 86 private StatusBarNotification getSbn(String pkg, int id, String tag, in getSbn() argument 88 return getSbn(pkg, id, tag, user, null); in getSbn() 180 final String pkg = "package"; in testNoGroup_postingUnderLimit() local 182 mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM), in testNoGroup_postingUnderLimit() 190 final String pkg = "package"; in testNoGroup_multiPackage() local 193 mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM), in testNoGroup_multiPackage() 203 final String pkg = "package"; in testNoGroup_multiUser() local 205 mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM), in testNoGroup_multiUser() [all …]
|
/frameworks/base/services/core/java/com/android/server/pm/verify/domain/ |
D | DomainVerificationCollector.java | 32 import com.android.server.pm.pkg.AndroidPackage; 33 import com.android.server.pm.pkg.component.ParsedActivity; 34 import com.android.server.pm.pkg.component.ParsedIntentInfo; 95 public ArraySet<String> collectAllWebDomains(@NonNull AndroidPackage pkg) { in collectAllWebDomains() argument 96 return collectDomains(pkg, false /* checkAutoVerify */, true /* valid */); in collectAllWebDomains() 104 public ArraySet<String> collectValidAutoVerifyDomains(@NonNull AndroidPackage pkg) { in collectValidAutoVerifyDomains() argument 105 return collectDomains(pkg, true /* checkAutoVerify */, true /* valid */); in collectValidAutoVerifyDomains() 113 public ArraySet<String> collectInvalidAutoVerifyDomains(@NonNull AndroidPackage pkg) { in collectInvalidAutoVerifyDomains() argument 114 return collectDomains(pkg, true /* checkAutoVerify */, false /* valid */); in collectInvalidAutoVerifyDomains() 117 public boolean containsWebDomain(@NonNull AndroidPackage pkg, @NonNull String targetDomain) { in containsWebDomain() argument [all …]
|
/frameworks/base/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/ |
D | PackageParserTest.java | 66 import com.android.server.pm.parsing.pkg.AndroidPackageUtils; 67 import com.android.server.pm.parsing.pkg.PackageImpl; 68 import com.android.server.pm.parsing.pkg.ParsedPackage; 70 import com.android.server.pm.pkg.AndroidPackage; 71 import com.android.server.pm.pkg.PackageUserStateInternal; 72 import com.android.server.pm.pkg.component.ParsedActivity; 73 import com.android.server.pm.pkg.component.ParsedActivityImpl; 74 import com.android.server.pm.pkg.component.ParsedApexSystemService; 75 import com.android.server.pm.pkg.component.ParsedComponent; 76 import com.android.server.pm.pkg.component.ParsedInstrumentation; [all …]
|